This question already has answers here:
Which annotation should I use: @IdClass or @EmbeddedId
(7个答案)
在4个月前关闭。
JPA/Hibernate复合主键,
这是一个天真幼稚的问题。我决定使用
还有其他理由支持和/或反对吗?是JPA(规范)的建议吗?
(7个答案)
在4个月前关闭。
JPA/Hibernate复合主键,
@IdClass
或@EmbeddedId
实现的最佳选择是什么?为什么?这是一个天真幼稚的问题。我决定使用
@EmbeddedId
(无论出于何种原因),我觉得我做错了选择。取消引用包含列属性的EmbeddedId是多余的,并且在编码时很容易出错。还有其他理由支持和/或反对吗?是JPA(规范)的建议吗?
最佳答案
首先,如果可能,请不惜一切代价避免使用复合ID。但是,如果您确实需要,我建议使用@EmbeddedId
。@IdClass
基本上是EJB 2.1的遗留物,它使从BMP迁移变得更加容易。在其他一些罕见的情况下,它也可能比@EmbeddedId
更好。但是,通常@EmbeddedId
越来越好,因为它在对象中更好地封装了键的概念。
如果需要,请在 key 字段中使用@AttributeOverride(s)
。
我不明白为什么您认为取消引用嵌入式ID是多余的并且容易出错。
09-25 20:22