【问题标题】:Store JPA entity with given field object id instead of object itself使用给定的字段对象 id 存储 JPA 实体而不是对象本身
【发布时间】:2015-03-15 13:59:34
【问题描述】:

问题如下:

我们有实体:

@Entity
public class Feedback {
    @Id
    @GeneratedValue(generator="token")
    private String id; 

    @ManyToOne
    private Product product;

    private String message;

    // other fields
}

我们有一个服务器端点,它接收来自客户端的反馈。 以多部分/基于表单的格式收到的反馈,带有字段:

 ProductId - product identifier
 Message - feedback message
 Some other fields

要设置 Feedback.product,我们需要从 JPA 加载 Product 对象 - 这可能很耗时并且会创建不必要的查询。

是否可以存储实体,但传递产品 id 而不是产品对象? 我们需要一些方法来修改 INSERT 查询。

我们将 EclipseLink JPA 与 Spring 和 Vaadin 结合使用。

【问题讨论】:

    标签: java jpa persistence


    【解决方案1】:

    使用EntityManager.getReference():如果实体尚未加载,它只会围绕 ID 创建一个延迟初始化的代理,而不会执行任何 SQL 查询。

    【讨论】:

    • 谢谢。如何检查实体是否存在?或者强制 getReference 抛出异常,如果没有具有这样 id 的实体?
    • 使用查找。但是你会遇到一个你想避免的查询。
    猜你喜欢
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    相关资源
    最近更新 更多