2016-06-14 3 views
0

가입에 대한 예상 경로, 나는이 예외를HQL 왼쪽 가입하기 - org.hibernate.hql.internal.ast.ErrorCounter - 아래 코드를 실행하는 동안

오류 org.hibernate.hql.internal.ast을 얻었다. ErrorCounter - 예상 경로는 입니다.

DB 뷰

Entity 클래스 : DB 테이블에 대한

@NamedQueries({ 
@NamedQuery(name = "find", 
      query = "SELECT v.cxxx, trk.cxxx, trk.ixxx" 
     + "FROM AxxxCxxx as v LEFT JOIN AxxxCxxxTxxx as trk " 
     + "ON v.cxxx = trk.cxxx " 
     ) 
}) 

@Entity 
@Table(name = "V_XXX") 
public class AxxxCxxx implements Serializable { 

private static final long serialVersionUID = 1L; 

@Id 
@Column(name = "CXXX") 
private String cxxx; 
//getter, setter 
} 

Entity1 클래스 :

@Entity 
@Table(name = "T_XXX") 
public class AxxxCxxxTxxx extends Super implements 
    Serializable { 

private static final long serialVersionUID = 1L; 

@Column(name = "CXXX") 
private String cxxx; 
//getter, setter 
} 

슈퍼 클래스 :

@MappedSuperclass 
public abstract class Super implements Serializable { 
private static final long serialVersionUID = -1413197336548058176L; 

@Id 
@Column(name = "TXXX", nullable = false) 
private Integer txxx; 

@Column(name = "IXXX", length = 15) 
private String ixxx; 
//getter, setter 

} 

나는 NamedQuery를 실행하려고, 이 예외가 있습니다 :

Caused by: org.hibernate.HibernateException: Errors in named queries: find 
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:504) 
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444) 
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:802) 
... 26 more 

org.hibernate.hql.internal.ast.QuerySyntaxException: Path expected for join! [SELECT v.cxxx, trk.cxxx, trk.ixxx" 
    + "FROM AxxxCxxx as v LEFT JOIN AxxxCxxxTxxx as trk " 
    + "ON v.cxxx = trk.cxxx] 
org.hibernate.hql.internal.ast.InvalidPathException: Invalid path: 'trk.ixxx' 
at org.hibernate.hql.internal.ast.util.LiteralProcessor.lookupConstant(LiteralProcessor.java:114) ~[hibernate-core-5.0.5.Final.jar:5.0.5.Final] 

제발, 도와 줄 수 있습니까? MappedSuperClass에 대해 JPQL을 사용하여 뷰와 테이블로 왼쪽 조인을 해결할 수 있습니까?

답변

0

SQL 쿼리에는 @NamedNativeQuery를 사용해야합니다. @NamedQuery의 경우 쿼리 식은 HQL입니다. 위의 매핑을 고려

, 당신은 정말 HQL 방금 직교 제품을 사용할 수 있습니다 가입 할 수 없습니다

@NamedQuery(name = "find", 
     query = "select v.cxxx, trk.cxxx, trk.ixxx " 
    + "from AxxxCxxx as v, AxxxCxxxTxxx as trk " 
    + "where v.cxxx = trk.cxxx " 
    ) 

}) 당신은 당신이 원하는 경우 엔티티 사이의 관계를 매핑 할 필요가

0

JPQL 쿼리에서 JOIN을 사용하십시오.

뭔가 axxxCxxxTxxx이 DB의 구조에 따라 올바르게 AxxxCxxx 클래스에 선언 및 매핑 필드

FROM AxxxCxxx as v INNER JOIN v.axxxCxxxTxxx as trk. 

있다.

추가 정보는 herehere

을 얻을 수 있습니다.
관련 문제