【发布时间】:2022-10-06 23:06:37
【问题描述】:
考虑一个名为 Profile 的 Java 实体:
@Entity
public class Profile {
@GeneratedValue
Long id;
String firstname;
}
并考虑另一个名为ProfilePicture 的实体。
每个Profile 恰好有一个ProfilePicture。但是,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 实体内的变量。有人可以帮帮我吗?
标签: java database hibernate spring-data-jpa