Hibernate @OneToMany ConstraintViolationException

时间:2013-01-27 10:14:13

标签: java mysql hibernate constraints

问题是我想有可能为不同的预订使用相同的parachute_id,但是当我保存具有相同parachute_id的预订时,我得到: org.hibernate.exception.ConstraintViolationException: Duplicate entry '78' for key 'parachute_id'

这是我的代码:

@OneToMany  
@JoinTable(name="reservation_parachute")  
Collection<Parachute> parachute = new ArrayList<Parachute>();    

和数据库示例:
Reservation_id parachute_id
130 76
129 75
127 51
127 63
126 10
126 2
126 1
131 77
133 78

2 个答案:

答案 0 :(得分:0)

我认为您正在将@OneToMany@ManyToMany混合。

这样读:

One预订'拥有'Many降落伞

但是你需要这样的东西:

Many预订'分享'Many降落伞

希望它有所帮助。

答案 1 :(得分:0)

在您描述的情况下,您不需要多对多连接表。

对于降落伞有不同的保留,我会这样做:

Resrvation.java中的

@ManyToOne
@JoinColumn(name = "parachuteID")
private Parachute parachute;
Parachute.java中的

@OneToMany(mappedBy = "parachute")
private List<Reservation> reservations;

这样,降落伞就会有一份预订清单。