Java 在Hibernate@Generated注释中使用GenerationTime.INSERT的合理方案有哪些?
我想知道当我对实体进行更新时,Hibernate在使用@Generated(value=GenerationTime.INSERT)注释的字段上的行为 我有一个具有以下字段的实体(由数据库触发器填充,第一个在插入时,第二个在插入时,每次更新时):Java 在Hibernate@Generated注释中使用GenerationTime.INSERT的合理方案有哪些?,java,hibernate,Java,Hibernate,我想知道当我对实体进行更新时,Hibernate在使用@Generated(value=GenerationTime.INSERT)注释的字段上的行为 我有一个具有以下字段的实体(由数据库触发器填充,第一个在插入时,第二个在插入时,每次更新时): 当我从数据库加载一个实体时,这两个字段都会被填充——正如预期的那样 当我从web ui接收到实体时,这两个字段都将为空-正如预期的那样,因为它们没有绑定到任何表单字段 打完电话 sessionFactory.getCurrentSession().
- 当我从数据库加载一个实体时,这两个字段都会被填充——正如预期的那样
- 当我从web ui接收到实体时,这两个字段都将为空-正如预期的那样,因为它们没有绑定到任何表单字段
sessionFactory.getCurrentSession().saveOrUpdate(object);
createdBy字段将为null,但updatedBy字段将设置为正确的值(由数据库创建)
因此,实体不再包含来自数据库的值——这是一种不希望出现的行为
因为我的情况可以解决这个问题
-我可以将GenerationTime更改为ALWAYS,但这似乎令人困惑,因为createdBy实际上只在插入实体时设置。
-我可以对实体进行刷新,但我希望避免额外的调用
私人日历创建日期 这并没有回答关于GenerationTime.INSERT的语义的一般问题。
sessionFactory.getCurrentSession().saveOrUpdate(object);