【问题标题】:JPA - ManyToOne: Join columns and query tables without using whole ObjectJPA - ManyToOne:在不使用整个对象的情况下连接列和查询表
【发布时间】:2020-12-03 17:34:56
【问题描述】:

我有一个OrderItemEntity,我想以 ManyToOne 关系将它与特定的OrderEntity 关联(许多 OrderItem 属于一个订单)。

我想用@JoinColumn 连接两个表的列,但不使用(Java-Object)OrderEntity。

原因:每当我想查询 OrderItemRepository(例如,列出特定订单的所有 OrderItem)时,我都必须提供一个 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));
}

【问题讨论】:

    标签: java spring-boot hibernate jpa


    【解决方案1】:

    先把属性改成private OrderEntity order;,把repository里的方法改成ArrayList&lt;OrderItem&gt; findByOrder_Id(Long orderEntityId);,然后传入订单实体id就可以得到实体了。

    【讨论】:

      猜你喜欢
      • 2020-06-23
      • 2021-11-12
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 2020-02-10
      • 2021-07-02
      • 2016-12-27
      相关资源
      最近更新 更多