[백업][가리사니] jpa 에서 native query (dbms sql) 사용하기
servlet, spring

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

@Query 에 옵션으로 nativeQuery=true 로 바꿔주면 사용할 수 있습니다.

public interface FnRepository extends JpaRepository<User, Long> {
	// nativeQuery=true 를 사용.
	@Query(value="SELECT now()", nativeQuery=true)
	public String now();

	// 역시 nativeQuery 의 특징은 아니지만 이런식으로 받아올 수도있다.
	// { Object[]{no, name}, Object[]{no, name},... Object[]{no, name} } 처럼 입력됨.
	@Query(value="SELECT no, name FROM data_function()", nativeQuery=true)
	public List<Object[]> datas();
}

출력

@Autowired
FnRepository fnRepository;

@ResponseBody
@RequestMapping(path="/now", produces="text/plain")
public String now(HttpServletResponse res) {
	return fnRepository.now();
}

@RequestMapping(path="/datas", produces="text/json")
public void user(HttpServletResponse res) throws IOException {
	Writer out = res.getWriter();

	for (Object[] data: fnRepository.datas()) {
		for (Object value : data) {
			out.write(value.toString());
			out.write("\r\n");
		}
	}
}