如何动态地将对象添加到hibernate查询中

时间:2014-12-15 09:30:42

标签: java hibernate hql

当我使用Hibernate查询语言时,如何在数据库中添加我想从DB获取的对象?

我想达到的是这样的事情:

......
if(....){
queryString = "from '" + Object1+ "'";
}

if(...){
queryString = "from '" + Object2+ "'";
}

....    
Session session = this.getSessionFactory().getCurrentSession();
Query query = session.createQuery(queryString);
......

我尝试了不同的语法,但每次都会出错。

3 个答案:

答案 0 :(得分:1)

通过Criteria API,您可以轻松构建动态查询...

Criteria criteria = session.createCriteria(Sale.class);
if (startDate != null) {
  criteria.add(Expression.ge("date",startDate);
}
if (endDate != null) {
  criteria.add(Expression.le("date",endDate);
}
List results = criteria.list();

答案 1 :(得分:1)

你可以用这个:

    ......
if(....){
queryString = "from '" + Object1.getClass().getName()+ "'";
}

if(...){
queryString = "from '" + Object2.getClass().getName()+ "'";
}

....    
Session session = this.getSessionFactory().getCurrentSession();
Query query = session.createQuery(queryString);
......

答案 2 :(得分:1)

实际上你需要的是传递类名。您可以使用以下方式获取给定对象的类名。

object1.getClass().getSimpleName()

因此,在您的情况下,您可以在查询中附加此内容

示例:

if(....){
queryString = "from '" + Object1.getClass().getSimpleName()+ "'";
}