如何同时使用Hibernate命名查询和条件对象

如何同时使用Hibernate命名查询和条件对象,hibernate,Hibernate,我定义了Hibernate命名查询,因此我使用criteria.getNamedQuery()获取此查询 在这里,我想将其与criteria对象集成,以便设置额外的约束 有什么提示吗 问候,, Raju您不应该将子句添加到预构建的命名查询中,您可以使用该类创建任何需要的查询 您还可以更改命名查询并添加like子句 session.getNamedQuery("findStuff").setString("likeWhat", value); 您的查询将在哪里 select * from som

我定义了Hibernate命名查询,因此我使用criteria.getNamedQuery()获取此查询

在这里,我想将其与criteria对象集成,以便设置额外的约束

有什么提示吗

问候,,
Raju

您不应该将子句添加到预构建的命名查询中,您可以使用该类创建任何需要的查询

您还可以更改命名查询并添加like子句

session.getNamedQuery("findStuff").setString("likeWhat", value);
您的查询将在哪里

select * from sometable where somevalue like :likeWhat
编辑:

你也可以这样做

Query q = session.getNamedQuery("findStuff");
String query = q.getQueryString(); // the sql statement
query += " and findStuff like :likeWhat"; // add your clause
q = session.createQuery(query);
q.setParameter("likeWhat", value);

但我认为这很有意思。

没有条件。getNamedQuery()方法。为什么要使用命名查询,而不仅仅是使用Criteria api创建查询?@Robby Pond:我们与表没有直接关系。我有一个命名查询,如果条件和命名查询组合不可用,如何在命名查询中提及like子句。是否可以在s.name like:%searchName%的位置执行此操作?是否可以应用like%likewhat%。@raj它应该隐式执行此操作。我已经找到了20个搜索参数,基于这些参数,我必须构建查询。我之所以选择命名查询,是因为我们不知道表之间的直接关系。我知道使用criteria api,否则。请告诉我如何排除具有空值的参数。出于安全考虑,我不会在internet上发布该代码。我希望你们理解这个问题。如果仍然需要代码,我会准备psuedo。