我有两个实体如下:
@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。
答案 0 :(得分:1)
字符串不能是OneToOne,并且您不能将某些内容标记为Basic和OneToOne。
要创建OneToOne关系,请使用
@OneToOne Entity2 entity2;
所有关系都应该是Id,而不是非id字段,例如awesome。可以在EclipseLink中的非Id字段上定义外键,但在JPA中不能,您需要使用DescriptorCustomizer。
一般来说,关系应该是Id,所以要么重新考虑Id的关系。
答案 1 :(得分:0)
我认为你应该在这里使用@JoinColumn并明确指定要加入的列的名称。