动态Hibernate查询

时间:2011-04-30 12:21:53

标签: java hibernate hql

我有一个用于返回动态查询的方法。此方法如下所示


public Query getLastId(String sProvider)
{
       String serviceProvider = sProvider.toLowerCase();     
       String query2 = "SELECT MAX(:serviceProvider.id) " + 
                   " FROM :sProvider :serviceProvider ";

       return em.createQuery(query2)
              .setParameter("sProvider", sProvider)
              .setParameter("serviceProvider", serviceProvider);

}

我希望此方法返回此

SELECT MAX(multichoice.id) FROM Multichoice multichoice

当我调用这样的方法时

getLastId("Multichoice");

请问如何编写查询变量以返回答案?

1 个答案:

答案 0 :(得分:1)

要执行此任务,您可以使用Criteria对象模型和投影在不同类型上运行查询: 看看这个article(15.7。预测,聚合和分组)

这是代码:

List results = session.createCriteria(class)
.setProjection( Projections.max("id"))
.list();

然后你应该向你的方法发送一个类而不是字符串。