나는 다음과 HBM 매핑을 가지고 있다고 가정HQL 쿼리
private Set<myClass> classes = new HashSet<myClass>();
public Set<myClass> getClasses() { return classes; }
public void setClasses(Set<myClass> classes) { this.classes = classes; }
나는 다음과 같은 HQL 쿼리를 실행하려면 :
select count(*) from Student where classes.className = :myClassName
하지만 Hibernate 다음 예외 예외 :
ERROR [service-j2ee-4] PARSER.reportError(33) | Invalid path: 'classes.className'
ERROR [service-j2ee-4] PARSER.reportError(33) | <AST>:0:0: unexpected end of subtree
ERROR [service-j2ee-4] PARSER.reportError(33) | left-hand operand of a binary operator was null
org.hibernate.hql.ast.QuerySyntaxException: Invalid path: 'classes.className' [select count(*) from Student where classes.className = :myClassName and 1=1]
집합의 속성을 기반으로 결과를 반환하는 최대 절전 모드 쿼리를 실행할 수 있습니까? 위의 예에서 우리는 '대수 I'또는 다른 과목을 듣는 모든 학생을 검색 할 수 있습니다. 편집
: 나는 그것이 실제 SQL 쿼리의 출력에 최대 절전 모드 얻기 위해 적절한 디버그 모드를 활성화하고 여기에서 생성하는 쿼리입니다 : 어떻게 이유 그것에 대해
select count(*) as col_0_0_
from student student0_, student_classes student1_, classes student2_
where student0_.studentId=student1_.studentId and student1_.classId=student2_.classId and student2_.className LIKE 'algebra' and 1=1;
처럼 뭔가를하려고하면 사실 HQL 좋은 가입 내부 지원하지 않습니다 (http://www.coderanch.com/t/218169/ORM/java/Inner-Join-HQL 참조). My Set에는 className이라는 속성을 가진 myClass 유형의 객체가 포함되어 있습니다. 해당 className 속성 (집합 자체의 속성이 아님)을 기반으로 쿼리하려고합니다. – David
네, 잘 지원합니다. 보낸 게시물에 대한 답변을 읽었습니까? 매핑은 이미 테이블이 함께 링크되는 방법을 정의하기 때문에 SQL에서와 같이 조인의 on 절을 지정하지 않아도됩니다. 내 질문을 해봤 니? 읽기 http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#queryhql-joins –
방금 쿼리를 시도하고 오류가 발생했습니다 : "참여 예상 경로! 잘못된 경로 : clazz .className " – David