2

抱歉,这个问题看起来有点简单,但是有没有办法通过将类指定为查询的变量来使用 Hibernate 从数据库中加载对象?

IE:

我有

克拉兹A、克拉兹B、克拉兹C

所有三个类都映射到数据库中的表 ClazzA、ClazzB 和 ClazzC

我想要一个像这样的变量:

类 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 回答