我有两个像下面这样的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;
答案 0 :(得分:3)
EntityManager.getReference(...)
应该可以解决问题。