正如Pascal所写,这是答案的一部分:
我应该使用哪个注释:@IdClass或@EmbeddedId
最后,我相信@IdClass
在实践中使用起来要容易得多,因为您必须添加embeddedId
属性名称才能取消引用PK属性,而并不是为所有非PK属性编写的。
您始终必须准确记住哪些属性是PK的一部分,哪些不是PK的一部分。这使不必要地编写JPQL查询变得复杂。
此外,AFAIK的JPA 2.0规范允许把@Id
上@XToX
/ @JoinColumn
/ s的性质和它介绍了@MapsId
注释,以便标识映射关系(在JPA又名衍生标识符)是更自然实现。