2013-04-27 6 views
0

질문이 있습니다. 두 개의 클래스가 있다고 가정 해 봅니다. User와 Employee, Employee는 사용자를 확장합니다. 사용자는 @Inheritance (strategy = InheritanceType.JOINED)입니다. 이 방법으로 직원을 얻는 것이 맞습니까? "p 사용자 WHERE p.login = : login AND p.password = : password"; 로그인 및 암호 속성은 사용자에 있습니다.최대 절전 모드 상속 선택

ERROR : org.hibernate.hql.internal.ast.QuerySyntaxException: USER is not mapped [FROM USER p WHERE p.login = :login AND p.password = :password]

+0

시도하면 어떻게됩니까? 이것은 SQL 질의가 아니라 HQL 질의이다. –

+0

여전히 NullPointerException이 발생합니다 – adaniluk

+0

그렇다면 NullPointerException이 발생하는 이유와 예외에 대한 전체 스택 추적을 보여주는 이유는 무엇입니까? –

답변

1

은 HQL 클래스 이름과 매핑 속성/속성 이름을 사용합니다. 항상. 테이블 및 열 이름을 사용하지 않습니다. 못. 그래서, 당신의 클래스는 처음 질문에 말했듯이, User라는 이름과는 잘 작동합니다, 당신이 요청 쿼리를 자바 명명 규칙을 존중하는 이름을 지정해야합니다 같은 경우 :

FROM User p WHERE p.login = :login AND p.password = :password 

를 예외는 것을 말한다 실제로 쿼리는 USER가 매핑 된 엔터티 클래스의 이름이 아니기 때문에 예외로, 유효하지 않은

FROM USER p WHERE p.login = :login AND p.password = :password 

은 예외입니다.

또한 예외는 NullPointerException이 아니지만 QuerySyntaxException입니다.

+1

나는 그것을 변경하고 서버를 재시작했지만 나에게 바람을 피었고 서버를 다시 시작하지 않았으므로 다른 오류라고 생각했지만 지금은 작동한다. – adaniluk