具有 table 到 json 关系的 JPQL @query
JPQL @query with relation table to json
我正在使用 @Query
创建一个 JPQL 查询以将关系数据列表获取到 JSON
package thymeleaf.test.repository;
import java.util.List;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import thymeleaf.test.model.Student;
@RepositoryRestResource
public interface StudentRepo extends CrudRepository<Student, Integer> {
@Query("select s,t.teachName FROM Student s JOIN s.teacher t WHERE s.teacher.teachName= t.teachName")
List<Student> findAll() ;
}
我得到以下结果:
[
[
{
"stuId": 1,
"stuName": "Pawarut klai-armon ",
"stuAge": 21
},
"sgkyrtgefewd "
]
]
我希望此查询 return 改为:
[
{
"stuId": 1,
"stuName": "Pawarut klai-armon ",
"stuAge": 21
"teachName": "sgkyrtgefewd "
}
]
您需要明确命名要获取的字段,如下所示:
select s.stuId, s.stuName, s.stuAge, t.teachName FROM Student s JOIN s.teacher t WHERE s.teacher.teachName= t.teachName
如果您需要命名您的字段,那么您需要像这样定义 DTO 对象:
class StuInfoWithTeacherName {
private long id;
private String stuName;
private int stuAge;
private String teacherName;
public StuInfoWithTeacherName(id, stuName, stuAge, teacherName){
//omitted
}
}
比调用查询
select new StuInfoWithTeacherName(s.stuId, s.stuName, s.stuAge, t.teachName) FROM Student s JOIN s.teacher t WHERE s.teacher.teachName= t.teachName
我正在使用 @Query
创建一个 JPQL 查询以将关系数据列表获取到 JSON
package thymeleaf.test.repository;
import java.util.List;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import thymeleaf.test.model.Student;
@RepositoryRestResource
public interface StudentRepo extends CrudRepository<Student, Integer> {
@Query("select s,t.teachName FROM Student s JOIN s.teacher t WHERE s.teacher.teachName= t.teachName")
List<Student> findAll() ;
}
我得到以下结果:
[
[
{
"stuId": 1,
"stuName": "Pawarut klai-armon ",
"stuAge": 21
},
"sgkyrtgefewd "
]
]
我希望此查询 return 改为:
[
{
"stuId": 1,
"stuName": "Pawarut klai-armon ",
"stuAge": 21
"teachName": "sgkyrtgefewd "
}
]
您需要明确命名要获取的字段,如下所示:
select s.stuId, s.stuName, s.stuAge, t.teachName FROM Student s JOIN s.teacher t WHERE s.teacher.teachName= t.teachName
如果您需要命名您的字段,那么您需要像这样定义 DTO 对象:
class StuInfoWithTeacherName {
private long id;
private String stuName;
private int stuAge;
private String teacherName;
public StuInfoWithTeacherName(id, stuName, stuAge, teacherName){
//omitted
}
}
比调用查询
select new StuInfoWithTeacherName(s.stuId, s.stuName, s.stuAge, t.teachName) FROM Student s JOIN s.teacher t WHERE s.teacher.teachName= t.teachName