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 中映射的是一个关联。
我正在尝试创建一个包含整数列表的 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
.
@SecondaryTable
。这不是你的情况,因为你在另一个 table 中映射的是一个关联。