与联接表的一对多关系

2022-09-01 00:05:36

我有一个使用联接表建模的一对多关系:

create table t1 (id int primary key, name varchar(10) /*...*/);
create table t2 (id int primary key, name varchar(10) /*...*/);
create table t1_t2 (t1_id int, t2_id int, primary key (t1, t2));

这些表应该对一个 t1 与多个 t2 的关系进行建模。使用 JPA 对这些表进行建模的正确方法是什么?


答案 1

一个 T1 到多个 T2 的典型表是 T2 上有一个指向 T1 的外键。通常不需要T1_T2表。

然后,JPA结构将是一对多的,可能是双向的。


可能会有一些安排,以使您描述的结构有效。您可以更改T1_T2:

  • 在 T2 上添加唯一约束(以便只允许一个 T2)

这真的是你想要的吗?

编辑:是的,这是你想要的;-)

我怀疑你可能会在网上找到很多例子。我没有经过验证的解决方案,但我会尝试以下方法:

Hibernate 注释参考文档中,请参阅“2.2.5.3.2.3.单向与连接表“来理解这个想法。它看起来像这样:

    @Entity
    public class Trainer {
        @OneToMany
        @JoinTable(
            name="TrainedMonkeys",
            joinColumns = @JoinColumn( name="trainer_id"),
            inverseJoinColumns = @JoinColumn( name="monkey_id")
        )
        public Set<Monkey> getTrainedMonkeys() {
        ...
    }

答案 2

推荐