我有两个 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(...)
这应该可以解决问题。
关于java - JPA 避免在保存对象时对关联对象进行额外的读取调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52586691/