java - JPA 避免在保存对象时对关联对象进行额外的读取调用
问题描述
我有两个 JPA 实体,如下所示,每个字段都有各自的 getter 和 setter,我在下面的代码中省略了这些实体。
1.
@Entity
@Table(name = "posts")
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true)
private String title;
}
2.
@Entity
@Table(name = "comments")
public class Comment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "post_id", nullable = false)
private Post post;
}
在保存评论对象时,我必须执行以下操作
Post post = postRepository.findById(postId)
comment.setPost(post);
commentRepository.save(comment);
问题是如何避免在保存评论之前加载 Post 对象。基本上我想避免这个额外的数据库读取调用,但我不想失去关联。
Post post = postRepository.findById(postId);
一种选择是简单地使用如下所示的brand_id,但我松开了我不想松开的关联。
private Long post_id;
解决方案
EntityManager.getReference(...)
这应该够了吧。
推荐阅读
- javascript - 如何将 Javascript 代码导入 AngularJS
- swift - Swift 中的单元测试。是否足以覆盖 100%?
- python - 实现一般的反向传播
- colors - 从 allegro5 中的显示器获取像素颜色
- xml - 不能将子节点附加到父节点(VBA-XML)
- python - 选择具有非零值的列,这些列在 pandas 中共享索引,没有循环
- java - MPAndroidChart 每 X 输入刷新一次图表
- java - 易失性写入 = 易失性读取
- hdfs - 来自多个路径的 Nifi 列表文件并将它们路由到各自的目的地
- r - 从具有相同列结构的多个数据框中删除基于特定条件的列