2013-04-11 3 views
0

의 속성을 확인할 수 없습니다Hibernate는 내가이 개 수업을 대문자 값 이름

session.createCriteria(Contact.class).add(Restrictions.eq("owner.id", 2)).list(); 

모든 괜찮지 만 나는 경우 사용자의 "id"속성 이름을 코드를 "Id"로 변경합니다. 그러나

session.createCriteria(Contact.class).add(Restrictions.eq("owner.Id", 2)).list(); 

나를 "속성 소유자를 확인할 수 없습니다 .Id"예외가 발생합니다.

나는 자바에서 변수 이름을 소문자로 시작해야한다는 것을 알고있다. 그러나 나는 Hibernate가 이런 식으로 행동하는 이유를 알고 싶다.

감사

답변

0

어떤 기준, 제한에 추가하거나 HQL (예 : SQL로) 정말 스크립트 언어하지 않은 문자열 때문에. Hibernate는 당신의 입력에 기반한 리플렉션 호출을 할 수있는 정교한 메커니즘을 가지고있다.

그래서, 하루의 끝에서, 당신은 경우 :

session.createCriteria(Contact.class).add(Restrictions.eq("owner.Id", 2)).list(); 

Hibernate는 실제로 객체가 owner라는 가지고 있기 때문에 getId()를 통해 (대소 문자 구분) Id를 호출하는 Contact 클래스의 객체를 생성합니다 메서드에 주석을 추가했습니다.

간략히 말하자면 이유가 그 이유입니다 ...