2

申し訳ありませんが、これは少し単純な質問のように見えますが、クラスをクエリの変数として指定することにより、Hibernate を使用してデータベースからオブジェクトをロードする方法はありますか?

すなわち:

私は持っている

ClazzA、ClazzB、ClazzC

3 つのクラスはすべて、db の表 ClazzA、ClazzB、ClazzC にマップされます。

次のような変数が必要です。

Class clazz=obj.getClass();

次に、クエリ構築の一部としてクラスを指定することにより、クエリを作成できます。

リスト objs=session.createQuery(...) ... .list();

これを行う方法はありますか?

4

3 に答える 3

2

HQL クエリでこれを行うエレガントな方法はありませんが、Criteria API を使用できます。

List objs = session.createCriteria(clazz).list();

以下も参照してください。

于 2012-05-03T15:39:25.327 に答える
1
String hql = "select o from " + clazz.getName() + " o where ...";
于 2012-05-03T15:38:42.037 に答える
0

これを試すことができます:

String getQuery(Class class) {
   StringBuilder hql = new StringBuilder("from ");
   hql.append(class.getCanonicalName());
   ...
   //Here you complete the query.
   ...
   return hql.toString();
} 
于 2012-05-03T15:38:00.163 に答える