2016-12-07 5 views
0

"ON" 空とSQLを生成します。Hibernateが参加し、私はシンプルで休止状態HQL使用して2つのテーブルに参加することはできません句

Query query =em.createQuery("select t from Ulist t inner join UlistTp tp"); 

私が取得org.hibernate.exception.SQLGrammarException:

Hibernate: select ulist0_.id as id1_2_, ulist0_.ACTUAL as ACTUAL2_2_, ulist0_.CD as CD3_2_, ulist0_.DT1 as DT4_2_, ulist0_.DT2 as DT5_2_, ulist0_.NAME as NAME6_2_, ulist0_.S1 as S7_2_, ulist0_.FK_LISTTP as FK_LISTTP8_2_ from EXS.U_LIST ulist0_ inner join EXS.U_LISTTP ulisttp1_ on 
10:32:46.562 [main] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - ORA-00936: missing expression 

私はそれを見て、 "ON"句が空であることを発見しました!どうして? 私が思うに、私のエンティティがうまくマッピングされている:私が使用

@Entity 
@Table(name = "U_LIST", schema="EXS") 
public class Ulist implements java.io.Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_EXS") 
    @SequenceGenerator(name="SEQ_EXS", sequenceName="EXS.SEQ_U_LIST", allocationSize=1) 
    @Column(name = "id", unique=true, updatable = false, nullable = false) 
    private Integer id; 

    @Column(name = "CD", updatable = true, nullable = true) 
    private String cd; 

    @Column(name = "NAME", updatable = true, nullable = true) 
    private String name; 

    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name="FK_LISTTP", referencedColumnName="ID") 
    private UlistTp ulistTp; 
    ...getters 
    ...setters 
} 

@Entity 
@Table(name = "U_LISTTP", schema="EXS") 
public class UlistTp implements java.io.Serializable { 

    public UlistTp() { 
    } 

    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_EXS") 
    @SequenceGenerator(name="SEQ_EXS", sequenceName="EXS.SEQ_U_LISTTP", allocationSize=1) 
    @Column(name = "id", unique=true, updatable = false, nullable = false) 
    private Integer id; 

    @Column(name = "CD", updatable = true, nullable = true) 
    private String cd; 

    @Column(name = "NAME", updatable = true, nullable = true) 
    private String name; 

    @OneToMany(fetch = FetchType.LAZY) 
    @JoinColumn(name="FK_LISTTP", referencedColumnName="ID") 
    @Fetch(FetchMode.SUBSELECT) 
    private List<Ulist> ulist = new ArrayList<Ulist>(0); 

    ...getters 
    ...setters 

} 

: 春・フレームワーク4.2.5.RELEASEが

休止5.1.0.Final

のOracle 11G

答えて

2

てみてくださいこの

クエリクエリ= em.createQuery( "Ulist t inner joinから選択してください。t.ulistTp tp ");

+0

それが機能するようになりましたが、あなたは、あなたがULISTでプロパティとして定義されているオブジェクトを参照する必要が – Lev

+0

あなたの答えを説明してください可能性があります。あなたがUlistTpの直接のクラスを参照しているので、Hibernateは同じクラスのための結合をidenitifyしない – murthy

関連する問題