【发布时间】:2009-01-27 19:47:39
【问题描述】:
我正在尝试映射以下内容:
public class Person{
...
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(name = "person_categories", joinColumns = @JoinColumn(name = "personId"), inverseJoinColumns = @JoinColumn(name = "categoryId"))
private Set<Category> categories
...
}
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "categoryId")
private Integer id;
@Column(unique = true)
private Sting name
...
}
当我尝试保存 Person 对象时,会插入类别,但会将重复项存储到表中。如何确保每个类别在其表中都是唯一的,同时保持传递持久性?我已经尝试使 name 列唯一,但这只能通过抛出约束错误来帮助。
【问题讨论】:
-
所以您是说在表 person_categories 中,您会发现多行具有完全相同的数据(对人员和类别的引用)?
-
同一类别的多行被插入到类别表中。我希望 Category 表充当一个 Set,仅当记录不存在时才会在其中插入。
标签: java hibernate orm many-to-many