【问题标题】:Hibernate mappedBy in aggregate associations, possible to use?Hibernate mappedBy 在聚合关联中,可以使用吗?
【发布时间】:2014-12-12 13:41:56
【问题描述】:

我正在尝试找出 mappedBy ... 如果我有 Person { Address address;那么我可以在 Address 中添加一个 Person 人,使用 mappedBy “address”... 但是,如果 Person 有类 Person { PersonDetails personDetails } 和 PersonDetails { Address address } 那么有没有办法从 Address 将映射返回 Person ?我怎样才能做到这一点?

这个设置是常用的并且工作正常:

    class Person {
            @OneToOne
            Address address;
    }


    class Address {
            @OneToOne(mappedBy="address")
            Person person;
    }

当调用 new Person() 时,上面将允许人员自动设置在地址上。

但是,如果可以,我可以按照这些方式做点什么吗?下面的例子不起作用:

    class Person {
            @OneToOne
            PersonDetails personDetails;
    }

    class PersonDetails {
            @OneToOne
            Address address;
    }

    class Address {
            @OneToOne(mappedBy="IS THERE A WAY TO REFER TO THE PERSON THROUGH MY OWNER, PERSONDETAILS??")
            Person person;
    }

在创建新的 Person() 时,我是否必须在 Address 上手动设置人员。

是否可以以某种方式组合使用@Column(table 或@JoinColumn?

【问题讨论】:

    标签: java sql hibernate jakarta-ee jpa


    【解决方案1】:

    mappedBy用于标记两个实体之间双向关系的另一端。因此,它不适用于您描述的目的。

    如果你只是想从Address 访问Person,你可以这样做

    class Address {
        @OneToOne(mappedBy = "address")
        PersonDetails personDetails;
        ...
        public Person getPerson() {
            return personDetails == null ? null : personDetails.getPerson();
        }
    }
    

    【讨论】:

    • 我更多的是在寻找一种让 hibernate 直接绑定人的方法,就像使用 mappedBy 时那样
    • 我不知道这种可能性。使用这个“链式吸气剂”有什么不能实现的吗?
    【解决方案2】:

    不可能使用 Hibernate 或 JPA。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 2011-07-26
      相关资源
      最近更新 更多