Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 在Hibernate@Generated注释中使用GenerationTime.INSERT的合理方案有哪些?_Java_Hibernate - Fatal编程技术网

Java 在Hibernate@Generated注释中使用GenerationTime.INSERT的合理方案有哪些?

Java 在Hibernate@Generated注释中使用GenerationTime.INSERT的合理方案有哪些?,java,hibernate,Java,Hibernate,我想知道当我对实体进行更新时,Hibernate在使用@Generated(value=GenerationTime.INSERT)注释的字段上的行为 我有一个具有以下字段的实体(由数据库触发器填充,第一个在插入时,第二个在插入时,每次更新时): 当我从数据库加载一个实体时,这两个字段都会被填充——正如预期的那样 当我从web ui接收到实体时,这两个字段都将为空-正如预期的那样,因为它们没有绑定到任何表单字段 打完电话 sessionFactory.getCurrentSession().

我想知道当我对实体进行更新时,Hibernate在使用@Generated(value=GenerationTime.INSERT)注释的字段上的行为

我有一个具有以下字段的实体(由数据库触发器填充,第一个在插入时,第二个在插入时,每次更新时):

  • 当我从数据库加载一个实体时,这两个字段都会被填充——正如预期的那样
  • 当我从web ui接收到实体时,这两个字段都将为空-正如预期的那样,因为它们没有绑定到任何表单字段
打完电话

sessionFactory.getCurrentSession().saveOrUpdate(object);
createdBy字段将为null,但updatedBy字段将设置为正确的值(由数据库创建)

因此,实体不再包含来自数据库的值——这是一种不希望出现的行为

因为我的情况可以解决这个问题 -我可以将GenerationTime更改为ALWAYS,但这似乎令人困惑,因为createdBy实际上只在插入实体时设置。 -我可以对实体进行刷新,但我希望避免额外的调用

  • 针对所述情况的最佳实践是什么是否有更好的选项可以避免显式调用刷新,并且不会模糊仅在插入时修改的字段的语义?
  • 使用@Generated(value=GenerationTime.INSERT)的合理方案是什么?
  • 你能这样试试吗。 @时态(TemporalType.TIMESTAMP) @已生成(GenerationTime.ALWAYS) @列(name=“create_date”,insertable=false,updateable=false)
    私人日历创建日期

    这并没有回答关于GenerationTime.INSERT的语义的一般问题。
    sessionFactory.getCurrentSession().saveOrUpdate(object);