我正在尝试为以下PK要求配置JPA类:
一个 Writer 类/表,其PK为 [Long id] ,例如[1],[2],[3] ......
Book 类/表,其复合PK为 [Writer Long id and Long index] (因此每个作者都有自己的书籍索引),例如[1] ,1,[1,2],[1,3](作家#1的三本书),[2,1],[2,2],[2,3],[2,4](四本书)作家#2)......
Page 类/表,其复合PK为 [Writer Long id,Book Long index and Long number] (因此每本书都有自己的页码),例如[1,1,1],[1,1,2],[1,1,3],[1,1,4],[1,1,5](作家#1和他的5页书索引#1)......
我需要从Book实例中调用 book.getWriter()并获取一个Writer实例;另外, page.getBook()会返回一个Book实例。当然,所有三个类都可以很容易地拥有一个简单的长PK,然后,例如,一本书会将Writer作为PK之外的一个不可为空的@ManyToOne关联,但它不能满足我们的需求。
我已经用尽了@Embedded(| Id),@ Embeddable,@ IdClass,@ MatsId等的任何配置。我可以想到或者谷歌搜索,但是Hibernate总会抱怨这种或那种,特别是关于< strong>页面类,其中“嵌套”。理想情况下,应该同样配置后面的段落类/表,其复合PK为 [Writer Long id,Book Long索引,Page Long number和Long paragraph index] 。< / p>
我希望有人对此有任何好的提示。
谢谢!
答案 0 :(得分:0)
使用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;
}
基本上,你希望你的模型看起来像什么?