【问题标题】:Join query in Spring Data JPA在 Spring Data JPA 中加入查询
【发布时间】:2021-06-15 13:33:36
【问题描述】:
我有两张桌子:
- 具有以下属性的汽车公司:
C_id(主键),
C_name
- Car_model 具有以下属性:
Com_id(参照 Car_company 的 C_id),
型号_年
保修
我希望单独访问这两个表,并且我希望对它们执行连接操作并显示所有 car_model 及其 car_company 名称。我尝试同时使用 JPQL 和本机查询,但没有任何效果。我还确保使用 OneToMany 和 ManyToOne 关联,但我最终得到了无限嵌套,即模型将 car_company 作为字段,这反过来将 car_models 作为列表,并且继续进行。请帮助我处理实体类和 DAO。
【问题讨论】:
标签:
spring
spring-boot
hibernate
spring-data-jpa
【解决方案1】:
您可以通过 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;
仅出于性能目的将您的关系定义为 LAZY 并在您将响应映射到数据传输对象 (DTO) 时防止循环嵌套。