我有两个实体和多个关系。
@Entity
@Table(name ="algo")
public class Algo{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
...
@ManyToMany
protected List<DbMatch> matches = new ArrayList<DbMatch>();
...
和
@Entity
@Table(name="matches")
public class DbMatch extends Match{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int mid;
....
当我尝试使用algo
列表保存dbmatches
时,我在algo_matches表上获得了Duplicate entry '90786' for key 'UK_auyvi1qkpdtaqrpuyv9je5rda'
。
Table: algo_matches
Columns:
algo_id int(11)
matches_mid int(11)
如何存储不同的algo
个对象但是可能存储列表中的重复匹配?
例如algo with algo_id 1与match_id 1匹配,算法algo_id 2与match_id 1匹配
索引
algo_matches 0 UK_auyvi1qkpdtaqrpuyv9je5rda 1 matches_mid 一个 5125 空值 空值 BTREE algo_matches 1 FK_h5utrptgjclq043weh6eks58g 1 algo_id 一个 4 空值 空值 BTREE algo_matches 1 matches_mid 1 matches_mid 一个 5125 空值 空值 BTREE
在将新匹配添加到列表时,我使用此dao方法更新algo对象:
public void update(Algo a){
try {
session.beginTransaction();
session.update(a);
session.getTransaction().commit();
}
catch (RuntimeException e) {
session.getTransaction().rollback();
session.clear();
throw e;
}
}
答案 0 :(得分:0)
从UK_auyvi1qkpdtaqrpuyv9je5rda
表中删除algo_matches
唯一索引。