2

我在 Hibernate 中定义了一个集合,如下所示:

...
public class Item {
    ...
    @ElementCollection
    List<Object> relatedObjects;
}

它使用列 item_id 和 object_id 创建一个映射表。

问题是 object_id 似乎是唯一的。换句话说,我不能让两个不同的项目与同一个对象相关。但这就是我想要的。

我希望 item_id 和 object_id 的组合是唯一的。我怎么做?

4

1 回答 1

0

这不是我正在经历的。对于以下实体:

@Entity
public class Person implements Serializable {
    @Id
    @GeneratedValue
    private Integer id;
    private String firstName;
    private String lastName;
    @Enumerated(EnumType.STRING)
    private Gender gender;

    @ElementCollection
    private Set<String> nicknames = new HashSet<String>();

    private String dept;

    // getters, setters
}

将创建以下表:

创建表Person(默认生成的id整数为identity,dept varchar(255),firstName varchar(255),gender varchar(255),lastName varchar(255),主键(id))
创建表 Person_nicknames(Person_id 整数不为空,昵称 varchar(255))
更改表 Person_nicknames 添加约束 FK24F0D97B19ACB65E 外键 (Person_id) 引用人

没有唯一的约束。但是如果没有看到您的“对象”类(它是一个可嵌入的类,对吗?),我不能说更多。

PS:ElementCollection不能是a ManyToMany,这更a OneToMany

于 2010-06-18T12:53:26.467 回答