java - JPA 避免在保存对象时对关联对象进行额外的读取调用

标签 java spring 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(...) 

这应该可以解决问题。

关于java - JPA 避免在保存对象时对关联对象进行额外的读取调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52586691/

相关文章:

java - Kafka Stream with Avro in JAVA , schema.registry.url"没有默认值

java - WebView 显示空白页面而不是加载链接

java - 无法访问接口(interface)实现类中的公共(public)方法(只能访问接口(interface)中声明的方法)

java - @PreAuthorize 无法正常工作

java - 如何在 Java 中查找 double 'n' 的多少次方才能得到 double 'n'。 Python 中 Math.log 的等效项

java - 具有完整路径的 getResourceAsStream(String) 返回 null 但文件存在

java - 如何使用 LEFT OUTER JOIN 创建 JPA 查询?

java - 缺少约束 : Import-Package: Not able to start Activator

java - JPA:保存具有多对一的实体时违反主键

java - 使用实体 +"mapped by"比使用 id 有什么优势吗?