2014-09-17 6 views
1

리포지토리 엔티티는 (createdDate, updatedDate ...와 같은) 감사/로그 속성을 가지며 응용 프로그램에 의해 할당되며 읽기 전용 속성이어야합니다. Jackson showed this feature is not supported에 대한 약간의 연구 (또는 그럴까요?) SDR이 여기에 도움이 될 수 있다면 궁금하십니까?읽기 전용 속성 지원

업데이트 1 : 자세한 내용은 엔티티를 추가 : 스프링 데이터 JPA와

@Document(collection="employees") 
public class Employee { 

    @Id 
    private String id; 
    private firstName; 
    private lastName; 

    //read-only attribute. initially assigned by application and should not be changed 
    private Date createdDate; 

    //read-only attribute. initially assigned by application and should not be changed 
    private Employee createdBy; 

    //getters setters truncated.... 
} 

답변

0

사용 스프링 데이터 나머지는 내가 JPA @Column를 사용하여 성공을 거두었습니다 (= false를 갱신).

JPA (@Document)를 사용하지 않는 것처럼 보이지만, 지속성 프레임 워크에 읽기 전용 필드를 나타내는 주석이 있습니까?

또한 getter가 있지만 설정자가 아닌 것은 퍼즐의 일부일 수 있습니다. 내 경우에는 spring-data-jpa AuditingEntityListener가 필드를 설정하므로 응용 프로그램 코드에 setter가 필요하지 않습니다.

import javax.persistence.Column; 
import javax.persistence.MappedSuperclass; 

import org.joda.time.DateTime; 
import org.springframework.data.annotation.CreatedBy; 
import org.springframework.data.annotation.CreatedDate; 
@MappedSuperclass 
public abstract class AuditedEntity extends AuditedUpdateEntity { 

    @CreatedDate 
    @Column(updatable = false) 
    private DateTime createdTs; 

    @CreatedBy 
    @Column(updatable = false) 
    private String createdBy; 

    public String getCreatedBy() { 
     return createdBy; 
    } 

    public DateTime getCreatedTs() { 
     return createdTs; 
    } 

} 
+0

1. 나는 응용 프로그램 코드가 이러한 속성에 값을 할당 이후는 세터가 필요 봄 몽고 @Document 2를 사용합니다. 그들은 오직 클라이언트에게만 읽기 전용입니다. – Stackee007