我刚从 JPA 开始,我有一个很可能是愚蠢的问题,但如果是,这意味着 JPA 有一些相当基本的东西!如果这是一个愚蠢的问题,请原谅我,但我无法在任何地方找到答案。
我想为我的表的主键自动生成 UUID,我已经阅读了很多关于如何执行此操作的内容,并阅读了所有关于 ID 在对象被持久化之前不可用的警告以及这如何影响 equals 和 hashCode方法,但我想出了一个我看不到问题的解决方案,但我很怀疑,因为我无法在网络上的任何地方找到对该方法的任何参考!
方法很简单:
- 实现一个 @PrePersist 方法,如果 ID 字段为空,则设置它。
- 在返回值之前为调用 @PrePersist 方法的 ID 实现一个 getter。
- 实现 hashCode 和 equals 以便它们使用 getter 来获取 ID,而不是直接访问字段。
在我看来,这可能很简单,这似乎可以解决所有问题,但我必须遗漏一些东西,否则肯定会有到处使用这种方法的例子!