没有列映射的JPA一对一关系
我有几个实体具有一对一的关系:没有列映射的JPA一对一关系,jpa,Jpa,我有几个实体具有一对一的关系: @Entity(name="stores") public class Store implements Serializable { @Id @GeneratedValue(strategy= GenerationType.AUTO ) @Column(name="id") private int id ; // How should I set goal ? private Goal goal ; } 以及:
@Entity(name="stores")
public class Store implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.AUTO )
@Column(name="id")
private int id ;
// How should I set goal ?
private Goal goal ;
}
以及:
我的问题是如何在商店实体中设置“目标”字段
通常,我会这样做:
@Entity(name="stores")
public class Store implements Serializable {
...
@OneToOne()
@JoinColumn(name = "goalId")
private Goal goal ;
...
但在这种情况下,我不能,因为底层的“stores”表属于另一个应用程序,不能修改(通过添加“goalId”列)
我需要的是Store实例能够通过在storeGoals表中查找具有相同storeId的记录来查找其目标(当然,我意识到我可能会遇到引用完整性问题…)
有什么办法吗?
谢谢 您可能正在寻找所谓的双向一对一关系。这与双向多对多或一对多/多对一关系的工作原理相同,因为一方“拥有”该关系,并控制外键中的值的设置;另一端指定它是另一端的“mappedby”,因此操作时就好像它是只读的一样。但是,双方都需要与任何手动更改保持同步;如果你设置了一面,但没有反映另一面的变化,JPA将不会为你解决这个问题 在这种情况下:
public class Store implements Serializable {
..
@OneToOne(mappedby="store")
private Goal goal ;
}
你可能正在寻找所谓的双向一对一关系。这与双向多对多或一对多/多对一关系的工作原理相同,因为一方“拥有”该关系,并控制外键中的值的设置;另一端指定它是另一端的“mappedby”,因此操作时就好像它是只读的一样。但是,双方都需要与任何手动更改保持同步;如果你设置了一面,但没有反映另一面的变化,JPA将不会为你解决这个问题 在这种情况下:
public class Store implements Serializable {
..
@OneToOne(mappedby="store")
private Goal goal ;
}
什么桌子?您不仅仅是希望重用Goal.storeId foriegn键关系,还是存在一个关系表“storeGoals”来映射这两个表?哪个storeGoals表?您不仅仅是希望重用Goal.storeId foriegn-key关系,还是存在一个关系表“storeGoals”来映射这两个表?这太简单了,我不得不问!这太简单了,我不好意思问了!