java - Hibernate 集合中的独特项目

标签 java hibernate orm collections jpa-2.0

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

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

它创建一个包含列 item_id 和 object_id 的映射表。

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

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

最佳答案

这不是我遇到的情况。对于以下实体:

@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

关于java - Hibernate 集合中的独特项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3067841/

相关文章:

java - 使用 Hibernate 在 Postgres 中使用 @EmbeddedId 和 @ElementCollection 持久化实体时出现问题

windows - Rust,Windows 10 : Diesel doesn't work, diesel setup 没有输出

Django 自定义字段列未创建

java - 使用 Criteria api 查找半径内的坐标

java - 守护进程线程数、线程数和总启动线程数

java - 使用 JavaSpaces 的 Blitz 实现

java - 组织.hibernate.MappingException : No Dialect mapping for JDBC type: 2002

java - TomEE 上的 Hibernate、Postgresql

java - 如果用户没有通过 If-None-Match,如何验证 ETag 是否有效?

java - 如何使用 Hibernate 映射具有(主题,名称)等属性的复合键?