gpt4 book ai didi

spring - 在 Spring Jpa 数据中加入 3 个表

转载 作者:行者123 更新时间:2023-12-04 14:47:09 25 4
gpt4 key购买 nike

我最近一直在努力将 3 个表与 spring 数据 jpa 连接起来。我有 3 个实体,Series , DossierItem . Series有很多Dossiers , 和 Dossier有很多Items (关系)。我做类似 Series.join(Dossier_.series).join(Dossier_.items) 的事情我最终得到了一个连接集。我想进行以下查询:

Select Items from Series,Dossier,Item 
Where Series.Id=Dossier.seriesId
and Dossier.id=Item.dossierId
and series.projectId = :param

我无法用 Spring 规范和标准 api 表达这个声明......请阐明

最佳答案

这更像是一个 JPA 问题。

首先,我总是强调,您不能访问“表格”。您应该将它们视为域实体。许多 JPA/Hibernate/其他 ORM 的误用实际上来自 SQL 或数据库概念的直接“翻译”。

回到你的问题,答案很简单。首先确保您的域实体中确实存在“关系”。存储 ID 无助于构建具体的域模型。例如,你有类似的东西:

@Entity
class Series {
@Id
Long id;

@OneToMany(mappedBy="series")
List<Dossier> dossiers;
}
@Entity
class Dossier{
@Id
Long id;

@ManyToOne
Series series;

@OneToMany(mappedBy="dossier"
List<Item> items;
}

@Entity
class Item{
@Id
Long id;

@ManyToOne
Dossier dossier;
}

查询很简单:
select s.dossiers.items from Series s where s.projectId = :param

或者,如果只有 @ManyToOne 更合理s 并省略 @OneToMany s,查询仍然很简单:
from Item where i.dossier.series.projectId = :param

关于spring - 在 Spring Jpa 数据中加入 3 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14572981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com