考虑一个名为Profile
:的Java实体
@Entity
public class Profile {
@GeneratedValue
Long id;
String firstname;
}
考虑另一个名为ProfilePicture
的实体。
每个CCD_ 3恰好有一个CCD_。然而,ProfilePicture
是可选的。我想在Profile
和ProfilePicture
之间建立@OneToOne
关系,我想知道这两个实体中的哪一个会是拥有实体,即父实体。
我的第一个想法是:由于每个Profile
都有一个ProfilePicture
,而不是相反,所以Profile
拥有ProfilePicture
,因此是父级。因此,我将在Profile
中添加以下条目:
@Entity
public class Profile {
@GeneratedValue
Long id;
String firstname;
@OneToOne
@JoinColumn(name = "picture_id")
ProfilePicture picture;
}
现在,我遇到了@MapsId
注释,我想知道是否可以更改ProfilePicture
:
@Entity
public class ProfilePicture {
@GeneratedValue
Long id;
Byte[] picture;
@OneToOne
@JoinColumn(name = "profile_id")
@MapsId
Profile profile;
}
我希望ProfilePicture
具有与对应的Profile
相同的id。然而,我不确定Profile
是否仍然拥有ProfilePicture
,因为现在概要文件被声明为ProfilePicture实体内的变量。有人能帮帮我吗?
您可以在ProfilePicture
实体中尝试@PrimaryKeyJoinColumn
来映射外键和主键。
@Entity
public class ProfilePicture {
@Id
Long id;
Byte[] picture;
@OneToOne
@PrimaryKeyJoinColumn(name="id", referencedColumnName="picture_id")
Profile profile;
}
参考:https://stackoverflow.com/a/27306662/6784846