This question already has answers here:
Which annotation should I use: @IdClass or @EmbeddedId

(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