支持只读属性

时间:2014-09-17 20:55:23

标签: spring-data-rest

我们的存储库实体具有由应用程序分配的审计/日志属性,如(createdDate,updatedDate ...),并且应该是用户的只读属性。关于Jackson showed this feature is not supported的一点点研究(或者是吗?)。想知道特别提款权在这里是否有任何帮助?

更新1:添加实体以获取详细信息:

@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....
}

2 个答案:

答案 0 :(得分:1)

org.springframework.data.annotation.ReadOnlyProperty添加在spring-data-commons 1.9.0中。

这符合目的。请参考:

答案 1 :(得分:0)

将spring-data-rest与spring-data-jpa一起使用,我使用jpa @Column(updatable = false)取得了成功。

看起来你没有使用JPA(@Document),你的持久性框架是否有一个注释来指示一个只读字段?

此外,拥有一个吸气剂而不是一个吸气剂可能是这个难题的一部分。在我的例子中,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;
    }

}