簡體   English   中英

JPQL @查詢與JSON的關系表

[英]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                            "
 ]
]

我希望此查詢返回它:

[
 {
   "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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM