jpa-manytone:在不使用整个对象的情况下连接列和查询表

643ylb08  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(264)

我有一个 OrderItemEntity 我想和一个特定的 OrderEntity 在多订单关系中(多个订单项属于一个订单)。
我想用@joincolumn连接两个表的列,但不使用(java对象)orderentity。
原因:每当我想查询orderitemrepository(例如,列出特定订单的所有orderitems)时,我必须提供一个orderentity( findByOrderId(OrderEntity orderEntity) ),但我想提供一个简单的orderid。有没有更好的方法来实现这一点?
我的orderitementity类:

@Entity
@Data
@AllArgsConstructor
public class OrderItemEntity {

    @Id
    private String orderItemId;

    private int quantity;
    private double subtotal;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "orderId")
    private OrderEntity orderId;

    public OrderItemEntity() {
    }
}

存储库接口:

@Repository
public interface OrderItemEntityRepository extends CrudRepository<OrderItemEntity, String>{

    ArrayList<OrderItem> findByOrderId(OrderEntity orderEntity);

}

方法来查询存储库

@Override
public ArrayList<OrderItem> getOrderItems(String orderId) {
    return orderItemEntityRepository.findByOrderId(new OrderEntity(orderId, null, null));
}
rmbxnbpk

rmbxnbpk1#

首先将属性更改为 private OrderEntity order; 并将存储库中的方法更改为 ArrayList<OrderItem> findByOrder_Id(Long orderEntityId); ,然后您只需传递订单实体id即可获得实体。

相关问题