Hibernate 从 2 个表中创建一个整数类型的列表

Hibernate create a list of type integer from 2 tables

我正在尝试创建一个包含整数列表的 class

@Table(name = "kidding")
@SecondaryTable(name = "kids_list")
public class Kidding {

    @Id
    @GeneratedValue
    @Column(name = "kiddingID")
    private long kiddingID;

    @Column(name = "doeID")
    private int doeID;

    @Column(name = "buckID")
    private int buckID;

    @Column(name = "fertilityDate")
    private Date fertilityDate;

    @Column(name = "kiddingDate")
    private Date kiddingDate;


    @ElementCollection
    @CollectionTable(name="kids_list", joinColumns=@JoinColumn(name="kiddingID"))
    @Column(name = "kidID")
    private List<Integer> kidIDs;

    @Column(name = "notes")
    private String notes;

    @Column(name = "ownerID")
    private long ownerID;

我有这两个表:Kidding 和 Kids_list

kidding 有一个主键 kiddingID 而 kids_list 有一个外键连接到 kidding 的主键

Table开玩笑:

kiddingID (PK) doeID BuckID
1 2 3
2 6 8
3 5 8
4 7 9

Table kids_list:

kiddingID (FK) kidID
1 1
1 2
1 3
2 4
4 5
4 6
3 7
2 8
3 9

最后,我想像这样 object 开玩笑地填写我的整数列表 :

When I get kidding 1:
List<Integer> kidsID {1,2,3}

When I get kidding 2:
List<Integer> kidsID {4,8}

When I get kidding 3:
List<Integer> kidsID {7,9}

When I get kidding 4:
List<Integer> kidsID {5,6}

有没有办法用休眠来做到这一点?

ATM 如果开玩笑的孩子有 1 个,我只会得到孩子 ID,但如果有 2 个,我会收到此错误:

org.hibernate.HibernateException: More than one row with the given identifier was found: 2, for class: com.GoatPool.goatpool.model.Kidding

如果问题或其他问题不清楚,请说明。如果需要,我想更详细地解释一下!

删除 @SecondaryTable。由于与 @ElementCollection.

的映射,Hibernate ORM 已经知道有一个辅助 table 如果单个实体的 属性 分布在多个 table 中,则使用

@SecondaryTable。这不是你的情况,因为你在另一个 table 中映射的是一个关联。