Java JPA映射非id字段作为外键
我有两个实体,如下所示:Java JPA映射非id字段作为外键,java,jpa,Java,Jpa,我有两个实体,如下所示: @Entity public class Entity1 { @Id Long id; @Basic @OneToOne @Column(unique=true,nullable=false) String awesome; ... } and @Entity public class Entity2 { @Id Long id; @OneToOne(mapped
@Entity
public class Entity1
{
@Id
Long id;
@Basic
@OneToOne
@Column(unique=true,nullable=false)
String awesome;
...
}
and
@Entity
public class Entity2
{
@Id
Long id;
@OneToOne(mappedBy="awesome",targetEntity=Entity1.class)
@Column(name="myAwesome", insertable=false,updateable=false)
@Basic
String awesome; //FK to Entity1
}
我希望生成如下所示的SQL:
Alter Table Entity1 Add Constraint Entity1Entity2_Awesome Foreign Key (myAwesome) References Entity1.Awesome
目前没有生成SQL,我使用的是eclipselink。我认为您应该在此处使用并显式指定要联接的列的名称。我认为您应该在此处使用并显式指定要联接的列的名称。字符串不能是OneToOne,也不能将某些内容标记为Basic和OneToOne 要创建OneTONE关系,请使用 @奥内托内 实体2实体2 所有关系都应该按Id,而不是按非Id字段(如awesome)进行。可以在EclipseLink中的非Id字段上定义外键,但在JPA中不可以,为此您需要使用DescriptorUserMizer
一般情况下,关系应该是由Id决定的,因此请重新考虑Id之间的关系。字符串不能是OneToOne,并且不能将某些内容标记为Basic和OneToOne 要创建OneTONE关系,请使用 @奥内托内 实体2实体2 所有关系都应该按Id,而不是按非Id字段(如awesome)进行。可以在EclipseLink中的非Id字段上定义外键,但在JPA中不可以,为此您需要使用DescriptorUserMizer 一般来说,关系应该是由Id决定的,所以要么重新考虑Id之间的关系