这受JPA
2规范的第2.4.1节“与派生身份相对应的主键”
约束。本节包含两个直接适用于您的问题的示例。
如规范中所述,在这种情况下,有两种方式表示子实体的密钥:
@IdClass
@EmbeddedId
这是一个大概的草图
EmbeddedId。我选择
EmbeddedId随意,但之间的选择
IdClass和
EmbeddedId是显著。您可以选择不同的方式。
// Child entity's composite primary key@Embeddablepublic class InstanceNotifyEntityId implements Serializable { Long eaihId; Long userId;}// Child entity@Entity@Table(name="EIF_INST_NOTIFIED")public class InstanceNotifyEntity implements Serializable { @AttributeOverrides({ @AttributeOverride(name="userId", column = @Column(name="USER_ID")) @AttributeOverride(name="eaihId", column = @Column(name="EAIH_ID")) }) @EmbeddedId InstanceNotifyEntityId id; @MapsId("eaihId") @ManyToOne InstanceEntity instance; // ... }父实体需要进行一项更改:该
userDetails属性
mappedBy应为“
id.eaihId”。我想就是这样,但是我之前从未使用过完全像这样的实体。可能错过了一些东西…如果发现错误,请发表。



