java - JPA 使用 Null 保存外键
问题描述
我有 2 个实体类,该实体的主键是另一个的复合键的一部分。
@Data
@Entity
@Table(name = "objectone")
public class ObjectOne {
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
@Type(type = "uuid-char")
private UUID id;
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "objectOneId", updatable = false)
Set<ObjectTwo> ObjectTwoList;
这是具有复合键的对象的实体类
@Data
@Entity
@Table(name = "objecttwo")
@IdClass(ObjectTwoKey.class)
public class ObjectTwo {
@Id
@NotNull
private UUID objectOneId;
@Id
@NotNull
private UUID triggerWorkOrderId;
@Id
@NotNull
@Column(name = "status")
@Enumerated(EnumType.STRING)
private Status status;
<-- other fields ommitted ->
}
如果我构建一个 ObjectOne 对象,我还会将 objectTwo 添加为一组:
objectOne.setObjectTwoList(Collections.singleton(objectTwo));
ObjectOne save = repo.save(objectOne);
save
将包含 objectTwo 的集合,但外键 (objectOneId) 设置为 null,因此当我尝试使用 检索它时repo.findById
,我只会得到 objectOne 但 objectTwo 不在列表中。我在这里做错了什么?
解决方案
推荐阅读
- mapbox-gl-js - 在地图框中的圆圈悬停时显示弹出窗口
- xcode - Xcode中如何隐藏调用栈中的第三方调用
- c++ - 如何绑定 SOCI 查询的输出?
- kubernetes - 使用 operator-sdk 生成“oneOf”属性
- json - 使用 jq 处理大文件时提高性能
- c++ - constexpr 构造函数需要常量成员函数的问题
- python - 使用 if 语句来了解用户是否创建了帖子
- c++ - 令牌“,”之前的预期主表达式
- html - HTML/CSS ; 我如何制作这个导航栏(水蓝色的?左边是 .png 格式的标志,它是如何突出背景的?
- python - 将单元格的每个单词转换为新行