我有两个java hibernate实体:
@Entity
public class Match_soccer extends Match{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int mid;
...
还有一个:
@Entity
public class Algo {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@OneToMany
private List<Match_soccer> matches = new ArrayList<Match_soccer>();
...
如果我尝试保存两个不同的
Algo
实体,但是使用一些matches
列表,我会得到Duplicate entry '6028' for key 'UK_auyvi1qkpdtaqrpuyv9je5rda'
异常。在数据库3中创建休眠表:
Algo
Match_soccer
和表:Algo_Match_soccer
with columns:
Algo1_id int(11)
matches_mid int(11) PK
我的目标是把比赛名单分配给阿尔戈。匹配可以是两个不同的Algo对象中的一些。
Algo a1 = new Algo();
Algo a2 = new Algo();
SoccerDAO sd = new SoccerDAO();
List<Match_soccer> ms = sd.getMatches(DateFrom,DateTo); // Matches from database
a1.setMatches(ms);
a2.setMatches(ms);
我使用此函数插入:
public void insertAlgo(Algo1 a){
try {
session.beginTransaction();
session.save(a);
session.getTransaction().commit();
}
catch (RuntimeException e) {
session.getTransaction().rollback();
session.clear();
throw e;
}
最佳答案
匹配可以是两个不同的Algo对象中的一些
那你就没有一对一的关系,而是一对多的关系。因为一个算法有几个匹配项,而一个匹配项属于几个算法。
更改映射,并相应地更改数据库模式:联接表的PK应该是一对ID,而不仅仅是匹配ID。