gpt4 book ai didi

java - 不相关类上的 JPQL 多个左连接

转载 作者:行者123 更新时间:2023-12-02 10:22:25 24 4
gpt4 key购买 nike

我有三个带有列的表(错误的假名):

STUDENT (student_id)
STUDENT_UNIQUE_INFO (student_unique_info_id, student_id)
STUDENT_OTHER_INFO (student_other_info_id, student_id)

我希望我可以更改架构,但我不能。有些学生没有 unique_info 和/或 other_info。

我的结果集如下:

STUDENT_ID | STUDENT_UNIQUE_INFO_FIELDS... | STUDENT_OTHER_INFO_FIELDS...

如果学生没有任何字段,这些字段有时可能为空。

问题是most examples会让 STUDENT 包含其他表的 ID,我没有这个选项。

我尝试了类似的方法(输出到一个新的 obj,该 obj 包含用于连接此事物的所有 3 个表)

SELECT NEW path.to.outputObj(S,
(SELECT SUI
FROM path.to.SUI SUI
WHERE S.studentId = SUI.studentId),
(SELECT SOI
FROM path.to.SOI SOI
WHERE S.studentId = SOI.studentId))
FROM STUDENT S

但它爆炸了,因为一些学生在student_other_info中有多个条目。

java.sql.SQLException: Subquery returns more than 1 row

我只是有点不知道如何去做这件事。

最佳答案

您应该将其他两个表映射为列表,每个学生可以包含 0..n 行。

class Student {
@OneToMany(mappedBy = "student");
List<StudentUniqueInfo> studentUniqueInfoList;

@OneToMany(mappedBy = "student");
List<StudentOtherInfo> studentOtherInfoList;
...
}

然后 StudentUniqueInfo.javaStudentOtherInfo.java 各有一个字段

 @JoinColumn(name = "STUDENT_ID")
private Student student;

关于java - 不相关类上的 JPQL 多个左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54242579/

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