考虑一个名为Profile
的Java实体:
@Entity
public class Profile {
@GeneratedValue
Long id;
String firstname;
}
再考虑另一个实体ProfilePicture
。
每个Profile
正好有一个ProfilePicture
。但是,ProfilePicture
是可选的。我想在Profile
和ProfilePicture
之间建立一个@OneToOne
关系,我想知道这两个实体中的哪一个将是拥有实体,即父实体。
我的第一个想法是:因为每个Profile
都有一个ProfilePicture
,而不是相反,所以Profile
拥有ProfilePicture
,因此是ProfilePicture
的父节点。
@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实体中的变量。有人能帮我吗?
1条答案
按热度按时间xdyibdwo1#
您可以尝试在
ProfilePicture
实体中使用@PrimaryKeyJoinColumn
来Map外键和主键。参考:https://stackoverflow.com/a/27306662/6784846