문제

올바른 방법은 프로그래밍 방식으로 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
}
도움이 되었습니까?

해결책

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

그것에 대해 생각하십시오 : 당신이 오르플 링 쿼리를 만들면, 그것은 프로그래밍 버그. 정보와 어떤 관계가 있습니까? 사용자에게 JPA 쿼리가 잘못되었다고 말합니까? 현실적으로 할 수있는 것은 오류를 기록하고 사용자에게 "나쁜 일이 발생했습니다"라고 말하는 것입니다. 어쨌든 나중에 로그를 확인할 때 기형 쿼리라는 것을 알게 될 것입니다 ...

편집하다

또한 조사 할 가치가 있습니다 createQuery() 잘못된 데이터를 먹이게하여 전화하십시오 - Javadoc 여기 그것을 던질 수 있다고 제안합니다 HibernateException, 그리고 나는 그것을 검증하는 것 외에 줄로 무엇을 할 수 있는지 잘 모르겠습니다 ...

다른 팁

Createquery를 사용할 수 있거나 JPQL을 작성하는 동안 클래스 이름을 넣어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top