2009-06-24 6 views
0

프로그래밍 방식으로 jpa 쿼리의 유효성을 검사하는 올바른 방법은 무엇입니까? Hibernate는 엔티티에 대한 모든 주석 기반 명명 된 질의의 유효성을 검사한다. 하지만 프로그래밍 방식으로 빌드 된 jpa 쿼리에서이 유효성 검사 루틴을 호출하여 오류를 검사하려면 어떻게해야합니까?JPA/Hibernate : jpa 쿼리의 코드 기반 유효성 검사

 
@Entity 
public class Foo { 
@Id 
public int id; 

public String name; 

} 
 
main(...) { 
    Query q = getEntityManager().createQuery("select e from " + Foo.class.getName() + " e where e.name = 'x' "); 
    // validate q here 
} 

답변

2

하지 않습니다. 통합은 프로덕션 환경과 동일한 스키마로 실제 데이터베이스를 사용하여 코드를 테스트합니다.

생각해 보면 : 잘못된 형식의 쿼리를 만들면 프로그래밍 버그이 발생합니다. 정보로 무엇을 할 것입니까? JPA 쿼리의 형식이 잘못되었음을 사용자에게 알리시겠습니까? 현실적으로 할 수있는 일은 오류를 기록하고 사용자에게 "나쁜 일이 생겼다"는 것입니다. javadoc에 here이 제안 - 당신은

이 가

또한 그것을 잘못된 데이터를 공급하여 createQuery() 전화를 조사 가치가있을 수도 ... 나중에 어쨌든 로그를 확인 할 때 조작 된 쿼리

편집을 알 수 HibernateException을 던질 수 있으며, 유효성 검사 이외의 다른 문자열로 어떤 작업을 할 수 있는지 확신 할 수 없습니다.

+0

나는 단지 hibernate가 @namedquery를 위해하는 것과 마찬가지로 프로그램 적으로 생성 된 쿼리의 유효성을 검사하기를 원한다. 오류가 발견되면 프로그램을 종료해야합니다. 여기서 수표는 여기서 질문이 아닙니다. 어떻게 생각합니까? – H2000

+0

@KlausMeier - 여기를 보면 : https://www.hibernate.org/hib_docs/v3/api/org/hibernate/Session.html#createQuery(java.lang.String), 당신은 createQuery) 메서드는 예외를 throw 할 수 있습니다. 그것은 이미 당신을 위해 유효성 검사를하고있을 것입니다. 깨진 쿼리를 입력하여 어떤 일이 발생했는지 확인하십시오. –

0

createQuery를 사용하거나 JPQL을 작성하는 동안 클래스 이름을 입력해야합니다.

관련 문제