【发布时间】:2011-04-02 09:42:39
【问题描述】:
我有一个实体,其中包含两个具有 @ManyToOne 关系的其他实体。
@Entity
public class A extends Serializable{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne
@Cascade(CascadeType.SAVE_UPDATE)
private B b;
@ManyToOne
@Cascade(CascadeType.SAVE_UPDATE)
private C c;
}
如果我尝试保存具有另一个 A 记录的“B_ID”和“C_ID”的 A 实例,我会得到异常:
org.hibernate.NonUniqueObjectException:具有相同标识符值的不同对象已与会话关联
例如:
A table
| ID | B_ID | C_ID |
| 1 | 1 | null | // this works
| 2 | null | 1 | // this works
| 3 | 1 | x | // this throws the exception
| 4 | x | 1 | // this throws the exception
x=any value of existent B/C_ID
B_ID 和 C_ID 在我的模型中不是唯一的,并且 (B_ID + C_ID) 不是唯一约束!!
我能做什么?
提前致谢。
【问题讨论】:
标签: java hibernate exception unique-constraint