hibernate post初始化

Vis*_*ish 5 java orm hibernate

一旦Hibernate从数据库加载对象,我想初始化持久对象的类成员.

我怎样才能做到这一点 ?

更具体地说:在下面的持久化对象中,我想初始化date的时区

class Schedule {

    Calendar date
    TimeZone tz;

}
Run Code Online (Sandbox Code Playgroud)

我无法在构造函数中执行此操作,因为hibernate将使用setter来初始化对象.我不能在setter中这样做,因为我不能依赖于初始化的顺序.

Chs*_*y76 8

您需要注册一个post-load事件监听器; 它将在您的对象加载后调用,因此您可以执行任何必要的后处理.

如果您正在使用JPA(Hibernate EntityManager),您只需编写一个方法并使用它进行注释即可@PostLoad.

否则,对于核心Hibernate,您需要实现PostLoadEventListener在您的配置中声明它.