아약스 요청에 회신에 약간의 문제가 있습니다. 처음에는 봄 부팅 MVC을 기반으로 가장 단순한 편안한 서비스를 제공합니다.봄 mvc 편안한 - 잘못된 json 응답 형식
모델 :
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.*;
public interface TetsModelDAO extends JpaRepository<Samples, Long>
{
@Query("SELECT s FROM TestModel s WHERE LOWER(s.name) LIKE LOWER(:entry) ORDER BY s.name")
List<TestModel> fetchByNameEntry(@Param("entry") String entry);
}
컨트롤러 :
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/")
public class TestController
{
@Autowired
private TetsModelDAO testmodel;
@RequestMapping("/name")
public List<TestModel> getDatasetsByNameEntry(@RequestParam("entry") String entry)
{
return testmodel.fetchByNameEntry("%"+entry+"%");
}
}
클라이언트 측 Ajax 요청 :
$.ajax(
{
url : "/name?entry=", //get all records
method: "GET"
})
,536 모델
import javax.persistence.*;
import java.util.*;
@Entity
@Table(name = "testmodel")
public class TestModel
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)//Postgresql sequence generator
private long id;
@Column(name = "name")
private String name;
@Column(name = "content")
private String content;
//Constructor
public TestModel()
{
}
//Id getter
public long getId()
{
return this.id;
}
//Name getter-setter
public String getName()
{
return this.name;
}
public void setName(String name)
{
this.name = name;
}
//Content getter-setter
public String getContent()
{
return this.content;
}
public void setContent(String content)
{
this.content = content;
}
}
DAO
이 예는 완벽하게 작동 - 캐릭터 라인 응답은 STANDART JSON과 같은 구조 같습니다 그러나
{"id":"1", "name":"John", "content":"blablabla1"}
{"id":"2", "name":"Sam", "content":"blablabla2"}
{"id":"3", "name":"Ken", "content":"blablabla3"}
, 내가 (말 만 ID 및 이름 필드를 가져 명시 적으로 JPQL 쿼리 fileds를 정의하는 시도), 나는 답장을 잘못 받는다. 수정 된 쿼리 (변경하지 않고 다른 코드)와
DAO :
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.*;
public interface TetsModelDAO extends JpaRepository<Samples, Long>
{
@Query("SELECT s.id, s.name FROM TestModel s WHERE LOWER(s.name) LIKE LOWER(:entry) ORDER BY s.name")
List<TestModel> fetchByNameEntry(@Param("entry") String entry);
}
이 경우 응답에서는 다음과 같습니다
1, John, 2, Sam, 3, Ken
방법 "도우미 클래스"를 작성하지 않고 (적절하게이 문제를 해결하려면)?
org.hibernate.hql.internal.ast.QuerySyntaxException : 클래스 [TestDto]를 찾을 수 없습니다 [새 TestDto (s.id, s.name)를 선택하십시오. TestModel에서 WHERE LOWER (s.name) LIKE LOWER (: entry)이게 뭐야? TestDa와 동일한 패키지의 클래스 TestDto – gorill
@Query에서 클래스의 전체 이름 (패키지 포함)을 지정해야합니다. - 그냥 내 대답에 추가했습니다. –
대단히 감사합니다.))))))) – gorill