2016-11-11 2 views
0

私はHibernateの構文に固執しています。モデルを作成せずに、Hibernateでテーブルを結合するためのHibernateの構文で、FROMをSELECT DISTINCT FROMとして書くか?

私が持っている(とその作品)の構文は次のとおりです。

FROM table1 t1, table2 t2, table3 t3 WHERE t1.id=t2.id AND t1.id=t3.id 

コードは次のようになります。

... 
EntityManager entityManager = entityManagerProvider.get(); 
String qstr = "FROM table1 t1, table2 t2, table3 t3 WHERE t1.id=t2.id AND t1.id=t3.id"; 
Query query = entityManager.createQuery(qstr, Object[].class); 
List<Object[]> myTables = query.getResultList(); 
for(Object[] o:myTables){ 
    table1 t1 = (table1)o[0]; 
    table2 t2 = (table2)o[1]; 
    table3 t3 = (table3)o[2]; 

    ... do something with the objects here 
} 
... 

私が望む何

SELECT DISTINCT FROM table1 t1, table2 t2, table3 t3 
WHERE t1.id=t2.id 
AND t1.id=t3.id 

私が試したことはすべて文法エラーですまたは望ましくない反復である。 結合ごとにモデルを作成する必要がなく、元の構文をどのように変更する必要がありますか?

答えて

0

現在、DISTINCTは大量のデータを転送するためのHibernateを複雑にする機能であるため、答えはありません... Hibernateの将来のリリースで発生する可能性があります。私たちが行うことができるのは、重複をチェックするためのマップを作成するか、シンタックス内でIS NOT NULL(主キーに対して)を使用して完全な外部結合を避けることです。また、OR文を避けて、私が言及したforループ内のすべての条件を検証してみてください...

私はより良い答えがあれば、それを楽しみにしています。

関連する問題