当前位置: 首页 > 知识库问答 >
问题:

Hibernate:从另一个表映射字段

鲜于峰
2023-03-14

我有三个表A表有字段

id

带字段的表B

id

带字段的表C

id_a
id_b

id_aid_b分别引用表A的id和表B的id。表C的postgres定义如下:

CREATE TABLE C (
    id_a BIGINT          NOT NULL REFERENCES a(id) ON UPDATE CASCADE ON DELETE CASCADE,
    id_b BIGINT          NOT NULL REFERENCES b(id) ON UPDATE CASCADE ON DELETE CASCADE,
    CONSTRAINT c_pkey
        PRIMARY KEY (a, b)
);

然而,在我的代码中,我不需要表C的实体。所以我希望能够在@ManyToOne关系中映射实体A和B:

@Entity
public class A {
    private Long id;

    @ManyToOne
    @JoinTable(name = "C",
        joinColumns = @JoinColumn(name = "id_a", referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(name = "id_a", referencedColumnName = "id"))
    private B b;
}
@Entity
public class B {
    private Long id;
}

我有一个测试是这样的:

    @Test
    void shouldFindBForA() {
        //given
        var a = new A();
        var b = new B();

        aRepository.saveAndFlush(a);
        bRepository.saveAndFlush(b);
        //when
        A foundA = aRepository.findAll().get(0);
        //then
        assertThat(foundA.getB()).isNotNull();
    }

isNotNull断言中失败。

我做错了什么?

共有1个答案

傅阳炎
2023-03-14

两个@JoinColumn都指向同一个id“id_a”

 类似资料:
  • 问题内容: 我需要将两个表映射到一个类,但很难弄清楚。一个表是ROOMS,另一个表是TRAINERS。 ROOMS表: 培训人员表: 表应当加入了,和。 ROOMS表的主键是:。TRAINERS表的主键是:。 我需要通过查询这个数据,,,,和。 在SQL中,可能类似于: 我正在项目中其他地方使用ROOMS表,它已经映射为独立对象。是否有一种方法可以将其用作TRAINERS对象的子对象,或者将这两个

  • 问题内容: 考虑以下类别: 映射到“订单”表。是否可以通过外键关系将客户名属性映射到客户表? 问题答案: 是的,您可以为此使用联接映射元素。另一种选择是映射视图而不是表。但是,如果可能的话,您应该采用面向对象的方法,并绘制订单和客户之间的多对多关系。

  • 我正在使用Hibernate和JPA注释来映射我的类。当hibernate尝试映射这个类时,我遇到了一个问题 我的Social alStat类是: 我得到了这个错误: 我猜发生这种情况是因为我试图映射到一个基本类,但@ElementCollection注释不应该解决这个问题吗? 我的item类如下所示:

  • 我有三个表:用户,角色,董事会。每个用户可以有多个板,但在一个板中用户只能有一个角色。我创建了三个类并添加了注释: Hibernate创建一个新表,如下所示: 我使用的是hibernate 4.2.2。

  • 我需要将Java转换为的实例(包括映射内容) 我应该用什么来代替来使此代码可编译?

  • 我有以下数据结构: <代码>地图 我想从这个复杂的 Map 对象中提取它的值(它本身是另一个字符串 Map)。我目前正在这样做: 上面的实现给了我一个新的Map对象,由于外部循环,它正在迭代。似乎我错过了什么。 如何从复杂的 Map 对象中提取内部 Map 对象? 编辑: 回应AlexWien的评论 原始数据结构: 原始数据结构背后的原因是为一对id(ID1和ID2)存储一个值。ID1和ID2可以