【问题标题】:Hibernate create a list of type integer from 2 tablesHibernate从2个表中创建一个整数类型列表
【发布时间】:2021-04-08 09:12:07
【问题描述】:

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

@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,kidding_list 有一个外键连接到kidding 的主键

餐桌开玩笑:

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

表 kids_list:

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

最后,我想像这样在对象中填充我的整数列表:

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

如果问题或其他内容不清楚,请说出来。如果需要,我想更详细地解释它!

【问题讨论】:

    标签: java spring hibernate gradle orm


    【解决方案1】:

    删除@SecondaryTable。由于与@ElementCollection的映射,Hibernate ORM 已经知道有一个二级表。

    @SecondaryTable 用于如果您具有分布在多个表中的单个实体的属性。这不是你的情况,因为你在另一个表中映射的是一个关联。

    【讨论】:

    • 哇!谢谢,我不敢相信这解决了它!我真的很高兴。我对 ORM 的东西真的很陌生,在这个问题上花了很多时间!
    猜你喜欢
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2021-09-29
    • 2021-11-22
    • 2019-07-07
    • 2021-08-16
    • 1970-01-01
    相关资源
    最近更新 更多