1

我有一个这样的查询:

SELECT *
FROM MyTable mt
WHERE mt.firstCondition = :var1
AND mt.secondCondition = :var2

var1 是一个整数,而 var2 是一个字符串。如果我收到 -1,我想放弃 var1 的条件。因此,如果 var1 低于零,则查询变为:

SELECT *
FROM MyTable mt
WHERE mt.secondCondition = :var2

我可以对 NamedQuery 进行更改吗?

4

2 回答 2

3

Hibernate 在启动时解析命名查询,这是提高性能的原因,因为 Hibernate 不必在每次执行查询时都这样做。所以我要说的是你不能动态地改变一个命名的查询,如果可以的话,它会破坏它的目的。您可以做的是在您的命名查询中放置一些条件以满足您的需求。Luis LL 为您提供了条件,所以我不会重复。

于 2013-07-04T20:29:14.750 回答
2

像这样?

SELECT *
FROM MyTable mt
WHERE (mt.firstCondition = :var1 OR :var1 = -1) AND mt.secondCondition = :var2
于 2013-07-04T20:08:55.547 回答