Hibernate 集合中的独特项目

发布于 2024-09-06 06:54:30 字数 310 浏览 4 评论 0原文

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

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

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

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

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

I have defined a collection in Hibernate like this:

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

It creates a mapping table with colums item_id and object_id.

The problem is that object_id seems to be unique. In other words I can not have two different items being related to the same object. But that is what I want.

I would like the combination of item_id and object_id to be unique. How do I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

塔塔猫 2024-09-13 06:54:30

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

@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

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

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

That's not what I'm experiencing. For the following entity:

@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
}

The following tables get created:

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

There is no unique constraint. But I can't say more without seeing your "Object" class (it's an embeddable class, right?).

PS: ElementCollection can't be a ManyToMany, this is more a OneToMany.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文