Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅加载多个同一关系的ID_Java_Hibernate - Fatal编程技术网

Java 仅加载多个同一关系的ID

Java 仅加载多个同一关系的ID,java,hibernate,Java,Hibernate,我在使用hibernate时遇到性能问题。我有以下资料: @Data @Entity @Table(name="\"Order_product\"") public class OrderProduct { @Id @SequenceGenerator(name="Order_product_id_seq", sequenceName="Order_product_id_seq", allocationSize=1) @Ge

我在使用hibernate时遇到性能问题。我有以下资料:

@Data
@Entity
@Table(name="\"Order_product\"")
public class OrderProduct {
    @Id
    @SequenceGenerator(name="Order_product_id_seq",
            sequenceName="Order_product_id_seq",
            allocationSize=1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,
            generator="Order_product_id_seq")
    private long id;
    @ManyToOne
    @NotNull
    private Product product;
    @ManyToOne
    @NotNull
    private ProductPrice price;
    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @NotNull
    private Order order;
}
现在,每当我试图执行:

List<OrderProduct> findByOrderId(@Param(value = "order") Long orderId);
List findByOrderId(@Param(value=“order”)长orderId);

Hibernate将为每个OrderProduct加载整个订单。如何禁用此功能,以便只加载订单的ID?

由于关联是惰性的,因此Hibernate将在
订单
字段中创建一个
订单
的代理

但是,只要调用代理实例的任何方法,代理实例就会被初始化。看一看当您只需要id(外键指向您案例中的关联实体)时如何禁用代理初始化。当然,请确保不要在代理上调用其他方法

或者,您可以显式映射外键列并使用它,而不是访问关联实体(它必须既不可插入也不可更新,因为该列已映射到关联中):

@Column(name = "order_id", insertable = false, updatable = false)
private long orderId;