假设我们有一个在数据库中默认生成的值
uuid UUID DEFAULT uuid_generate_v4()
如何标记用于检索值的后续选择的字段?
我想避免明确调用
entityManager.refresh()
,
我用 Hibernate 注释标记了该列
@Generated(event = { INSERT, UPDATE })
但这使得该字段不可写。在这种情况下可能没问题,但可能有些字段我想在插入时生成为默认值,然后能够更新它们,这个注释似乎限制了这一点。
还有其他我不知道的注释吗?或者使用带有默认字段的 JPA/Hibernate 的常用方法是什么? 另外,JPA注释会更好。
在我看来这是一个常见的场景,但我找不到太多相关信息。
我尝试了不同的组合,但它们并不像我想象的那么灵活。我还以与
@Generated
相同的方式实现了自己的注释,但我不想使用自定义注释,因为我可能不知道副作用
我看到两种可能性:
您知道某些属性是数据库生成的,因此您在插入操作后将它们标记为“脏”,希望持久层在返回真实对象之前执行读取操作。
另一种可能性是在插入后立即执行读取,让您为接下来可能发生的任何属性检索做好准备。