Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 目标实体中带有joincolumn的单向OneToOne_Java_Jpa_Hibernate Mapping - Fatal编程技术网

Java 目标实体中带有joincolumn的单向OneToOne

Java 目标实体中带有joincolumn的单向OneToOne,java,jpa,hibernate-mapping,Java,Jpa,Hibernate Mapping,我们如何实现两个实体之间的单向@OneToOne映射,并在目标实体上应用@JoinColumn 例如。 我有两个实体: @Entity public class Person { // Attaches column in the source entity i.e. Person @OneToOne @JoinColumn(name = "Person_ID") private Address address; //W

我们如何实现两个实体之间的单向@OneToOne映射,并在目标实体上应用@JoinColumn

例如。 我有两个实体:

   @Entity
   public class Person {

      // Attaches column in the source entity i.e. Person
      @OneToOne
      @JoinColumn(name = "Person_ID")
      private Address address;

      //Works for @oneToMany, attaches column in target entity i.e. Address
      @OneToMany
      @JoinColumn(name = "Person_ID")
      private Set<Address> addresses;  
   }

   @Entity
   public class Address {
     //list of columns
   }
@实体
公共阶层人士{
//将列附加到源实体中,即Person
@奥内托内
@JoinColumn(name=“Person\u ID”)
私人地址;
//适用于@oneToMany,在目标实体(即地址)中附加列
@独身癖
@JoinColumn(name=“Person\u ID”)
专用设备

如果联接用于使用外键映射策略的一对一或多对一映射,则外键列位于源实体或可嵌入的表中


如果联接用于使用外键映射策略的单向OneToMany映射,外键在目标实体的表中

我不理解您在JPA中提供这两个选项的问题。您有OneToMany映射,创建只返回单个实例的访问器,以及您的database约束可以配置为使“person_id”唯一。或者您正在查看JPA之外的内容吗?我想要OneToOne映射,寻找可以将外键列附加到目标实体的选项(在OneToMany中发生)…无论哪种方式,我都可以保留地址实体中的Person引用。让具有访问器的OneToMany返回单个实例对我来说不是一个好主意。您是否找到了解决此问题的正确方法?我遇到了相同的问题,我看不出JPA不允许定义此类映射的原因(即目标实体表中带有joincolumn的@OneToOne),但我感觉可能有一个。这是一个很好的问题