有没有办法在Hibernate中使用单选择查询而不是多选择查询?
我正在使用Spring+HibernateHQL。 我有一个要求,我需要多次激发select查询,因为每次参数都不同。 比如说 从名称=?的MY_表中选择*?年龄=? 输入将是有没有办法在Hibernate中使用单选择查询而不是多选择查询?,hibernate,hql,Hibernate,Hql,我正在使用Spring+HibernateHQL。 我有一个要求,我需要多次激发select查询,因为每次参数都不同。 比如说 从名称=?的MY_表中选择*?年龄=? 输入将是 "John", 30 "Nick", 29 "Joe", 32 等等。。可能有很多 这导致n个查询,其中n是输入的数量 例: 在hibernate中有没有一种方法可以让我只使用一个查询而不是多个select查询 前任: 从MY_表中选择*,其中name=John and age=30或name=Nick and age
"John", 30
"Nick", 29
"Joe", 32
等等。。可能有很多
这导致n个查询,其中n是输入的数量
例:
在hibernate中有没有一种方法可以让我只使用一个查询而不是多个select查询
前任:
从MY_表中选择*,其中name=John and age=30或name=Nick and age=29或name=Joe and age=32
或者任何其他优化方式?您可以使用UNION,但据我所知,HQL中不支持UNION。如果此限制仍然有效,那么您可能必须回过头来使用本机SQL
SELECT * FROM MY_TABLE WHERE name=John and age=30
UNION
SELECT * FROM MY_TABLE WHERE name=Nick and age=29
UNION
SELECT * FROM MY_TABLE WHERE name=Joe and age=32
如果使用条件查询,则可以使用析取:
SELECT * FROM MY_TABLE WHERE name=John and age=30
UNION
SELECT * FROM MY_TABLE WHERE name=Nick and age=29
UNION
SELECT * FROM MY_TABLE WHERE name=Joe and age=32
Disjunction d = Restrictions.disjunction();
for(param p : params) {
Conjunction c = Restrictions.conjunction();
c.add(Restrictions.eq("name", p.getName()));
c.add(Restrictions.eq("age", p.getAge()));
d.add(c);
}
criteria.add(d);