在 Spring Data JPA 中加入查询

问题描述

我有两张桌子:

  1. Car_company 具有以下属性C_id(主键), C_name
  2. Car_model 具有以下属性Com_id(参考 Car_company 的 C_id), 型号年份 保修

我希望单独访问这两个表,并且我希望对它们执行连接操作并显示所有 car_models 及其 car_company 名称。我尝试同时使用 JPQL 和本机查询,但没有任何效果。我还确保使用 OnetoMany 和 ManyToOne 关联,但我最终得到了无限嵌套,即模型将 car_company 作为字段,这个 inturn 将 car_models 作为列表,并且一直持续下去。请帮助我处理实体类和 DAO。

解决方法

您可以通过 oneToMany 注释获取 CarCompany 实体中每个汽车公司的 CarModel 列表,如下所示:

 @OneToMany(mappedBy = "carCompany",fetch = FetchType.LAZY,cascade = CascadeType.ALL)
private List<CarModel> carModels;

或者像这样在 CarModel 实体中获取所有带有公司字段的汽车模型:

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "Com_id",referencedColumnName = "C_id",nullable = false)
private CarCompany carCompany;

当您将响应映射到数据传输对象 (DTO) 时,请尝试将您的关系定义为 LAZY 以提高性能并防止循环嵌套。