Java JPA嵌套复合PK
我正在尝试为以下PK需求配置JPA类: 主键为[Long id]的Writer类/表,例如[1]、[2]、[3] 具有[Writer Long id和Long index]复合主键的图书类/表,因此每个作者都有自己的图书索引,例如[1,1]、[1,2]、[1,3]作者1的三本书、[2,1]、[2,2]、[2,3]、[2,4]作者2的四本书 具有[Writer Long id、Book Long index和Long number]组合主键的页面类/表,因此每本书都有自己的页码,例如[1,1,1]、[1,1,2]、[1,1,3]、[1,1,4]、[1,1,5]Writer 1及其书籍索引1的五页 我需要从Book实例中调用Book.getWriter并获取一个Writer实例;另外,page.getBook将返回一个Book实例。当然,这三个类都可以很容易地有一个简单的长PK,然后,例如,一本书将作者作为PK之外的一个不可为空的@ManyToOne关联,但它不适合我们的需要 我已经使用@Embedded | Id、@embeddeble、@IdClass、@MapsId等用尽了所有配置。我可以想到或用谷歌搜索,但Hibernate总是会以这样或那样的方式抱怨,尤其是在页面类中,事情变得“嵌套”。理想情况下,后面的段落类/表格的复合主键为[Writer Long id、Book Long index、Page Long number和Long paration index] 我希望有人对此有什么好的提示Java JPA嵌套复合PK,java,jpa,Java,Jpa,我正在尝试为以下PK需求配置JPA类: 主键为[Long id]的Writer类/表,例如[1]、[2]、[3] 具有[Writer Long id和Long index]复合主键的图书类/表,因此每个作者都有自己的图书索引,例如[1,1]、[1,2]、[1,3]作者1的三本书、[2,1]、[2,2]、[2,3]、[2,4]作者2的四本书 具有[Writer Long id、Book Long index和Long number]组合主键的页面类/表,因此每本书都有自己的页码,例如[1,1,1]
谢谢大家! 使用ID类的简单示例:
@Entity
Class Writer {
@ID Long id;
}
@Entity
@IdClass(BookId.class)
Class Book{
@ID Long index;
@ID Writer writer;
}
Class BookId{
Long index;
Long writer;
}
@Entity
@IdClass(PageId.class)
Class Page{
@ID Long number;
@ID Book book;
}
Class PageId{
Long number;
BookId book;
}
基本上,你希望你的模型看起来像什么