Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在保持休眠状态之前自动设置bean值(列)?_Java_Hibernate_Entity - Fatal编程技术网

Java 在保持休眠状态之前自动设置bean值(列)?

Java 在保持休眠状态之前自动设置bean值(列)?,java,hibernate,entity,Java,Hibernate,Entity,在Hibernate持久化实体之前,有没有一种优雅的方法来设置bean值(列)?基本上我有一个叫做“修改日期”的字段。它在一堆实体上。每当更新/修改这些实体中的一个时,我基本上希望自动设置该字段 我可以在服务层编写代码来设置每次手动保存/更新对象的日期 我还有一个Dao层。每个Dao都从包含save()方法的支持类扩展而来。我可以使用反射并在这个方法中设置值。我可以检查该类是否有一个名为“modicationDate”的字段,如果有,则将其设置为new Date() 还有比这更好的方法吗?还是使

在Hibernate持久化实体之前,有没有一种优雅的方法来设置bean值(列)?基本上我有一个叫做“修改日期”的字段。它在一堆实体上。每当更新/修改这些实体中的一个时,我基本上希望自动设置该字段

我可以在服务层编写代码来设置每次手动保存/更新对象的日期

我还有一个Dao层。每个Dao都从包含save()方法的支持类扩展而来。我可以使用反射并在这个方法中设置值。我可以检查该类是否有一个名为“modicationDate”的字段,如果有,则将其设置为new Date()

还有比这更好的方法吗?还是使用我的泛型save()方法是最好的方法?这是一件我想变得强壮的事情,我再也不用担心它了。我很高兴知道,通过简单地创建一个“modificationDate”属性,从现在起,它将自动为我处理。使用save()方法似乎是最好的方法,但如果有更好的方法,我希望了解它。

签出:

结帐:


嗯,这对我来说不是太有用,因为我不使用JPA(我没有指定),但它确实告诉我要查找“事件侦听器”,这足以让我找到我需要的;)谢谢嗯,这对我来说不是太有用,因为我不使用JPA(我没有指定),但它确实告诉我要查找“事件侦听器”,这足以让我找到我需要的;)谢谢
@Entity
@EntityListeners(class=LastUpdateListener.class)
public class Cat {
    @Id private Integer id;
    private String name;
    private Calendar dateOfBirth;
    @Transient private int age;
    private Date lastUpdate;

    @PostLoad
    public void calculateAge() {
        ...
    }
}

public class LastUpdateListener {
    /**
     * automatic property set before any database persistence
     */
    @PreUpdate
    @PrePersist
    public void setLastUpdate(Cat o) {
        o.setLastUpdate( new Date() );
    }
}