2010-06-18 66 views
2

我已经在Hibernate中定义的集合是这样的:暗金物品

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

,它创建colums ITEM_ID和OBJECT_ID的映射表。

问题是,object_id似乎是唯一的。换句话说,我不能将两个不同的项目与同一个对象关联起来。但那是我想要的。

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

回答

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 
} 

下表获得创建:

 
create table Person (id integer generated by default as identity, dept varchar(255), firstName varchar(255), gender varchar(255), lastName varchar(255), primary key (id)) 
create table Person_nicknames (Person_id integer not null, nicknames varchar(255)) 
alter table Person_nicknames add constraint FK24F0D97B19ACB65E foreign key (Person_id) references Person 

没有唯一约束。但是如果没有看到你的“对象”类,我就不能多说了(这是一个可嵌入的类,对吧?)。

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