2012-01-08 9 views
1

HQLクエリを実行できるかどうかは疑問でしたが、Javaコードで実行しました。通常、私はJavaでHQLクエリを実行する方法

def result = Person.executeQuery('select and so on..') 

ような何かをしたいが、executeQuery方法は、実行時に追加され、Javaコードから利用されていません。

答えて

2

あなたはSessionFactoryまたはSessionにアクセスする必要があります。あなたはSessionFactoryを持っている場合、それは

import org.hibernate.Query; 
import org.hibernate.Session; 
import org.hibernate.Transaction; 

Session session = sessionFactory.openSession(); 
Transaction tx = session.beginTransaction(); 

Query query = session.createQuery("select and so on.."); 
// set parameter values, e.g. 
// query.setString("name", "Matthias"); 
List result = query.list(); 

tx.commit(); 
session.close(); 

のようなものがあると思いますが、単純な選択のための更新や削除、およびオプションを実行した場合、トランザクションが必要です。

+0

SessionFactoryインスタンスを受信するうえで、どのような方法がありますか?それはorg.grails.internal.SESSION_FACTORY_HOLDERですか? Grailsのコアの外で使われるべきではない内部的なもののようなひどいもののように私に聞こえます。 –

+0

Javaクラスをどのように呼び出すかによって異なります。可能であれば、サービス/コントローラ/ etcから入手するのが最善です。 'def sessionFactory'を呼び出して呼び出されているJavaクラスに渡します。 –

関連する問題