当我对实体进行更新时,我想知道Hibernate关于用 @Generated(value = GenerationTime.INSERT)注释的字段的行为。
我有一个具有以下字段的实体(由数据库触发器填充,第一个插入,第二个插入和每次更新):
@Generated(value = GenerationTime.INSERT)
@Column(name="created_by", insertable = false, updatable = false)
private String createdBy;
@Generated(value = GenerationTime.ALWAYS)
@Column(name="updated_by", insertable = false, updatable = false)
private String updatedBy;
致电后
sessionFactory.getCurrentSession().saveOrUpdate(object);
createdBy字段将为null,但updatedBy字段将设置为正确的值(由数据库创建)。
因此实体不再包含数据库中的值 - 这是一种不受欢迎的行为。
对于我的情况可以解决问题 - 我可以将GenerationTime更改为ALWAYS - 但这似乎令人困惑,因为createdBy实际上只在插入实体时设置。 - 我可以对实体进行刷新 - 但我想避免额外的通话。
答案 0 :(得分:-1)