【问题标题】:JPA, change field value using java on UPDATE/mergeJPA,在更新/合并时使用 java 更改字段值
【发布时间】:2014-09-15 20:55:51
【问题描述】:

我有一个带有 updatedUser 字段的实体,它跟踪更新行值的用户。

创建实体时,此字段为空,但应在对实体进行更改并使用merge 时设置它。

有没有什么方法,通过java,只在实体更新时填充这个值? IE:如果它是从数据库创建或检索的,则不应更改。

@Entity
@Table(name="employees", uniqueConstraints= {
        @UniqueConstraint(columnNames="idEmployees"),
        @UniqueConstraint(columnNames="idCardNumber"),
        @UniqueConstraint(columnNames="niNumber")
})
public class Employee {

    @Id
    @GeneratedValue
    @Column(unique=true, nullable=false, updatable=false)
    private int idEmployees;

    //other class variables

    @ManyToOne(cascade=CascadeType.PERSIST, fetch=FetchType.LAZY)
    @JoinColumn(name="updatedEmployeeId")
    private Employee updatedEmployee;

    //constructors, getters and setters
}

【问题讨论】:

    标签: java jpa


    【解决方案1】:

    使用 javax.persistence.PreUpdate 注解可以更新值。但是没有办法注入当前用户。也许可以从 ThreadLocal 读取用户然后设置用户,但这不是一个真正干净的解决方案,因为它必须在输入您的业务代码之前设置..

    【讨论】:

    • 当前用户登录时会处理当前用户,我只想知道更新时是否可以设置字段。
    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    相关资源
    最近更新 更多