动态更改NamedQuery

时间:2013-07-04 20:00:15

标签: java sql hibernate jpa named-query

我有这样的查询:

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

var1是一个Integer,var2是一个String。如果我收到-1,我想丢弃var1的条件。因此,如果var1为零,则查询变为:

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

我可以在NamedQuery上进行更改吗?

2 个答案:

答案 0 :(得分:3)

Hibernate在启动时解析命名查询,这提高了性能,因为Hibernate不必在每次执行查询时都这样做。所以我所说的是你无法动态更改命名查询,如果可以,它将失败其目的。您可以做的是在您的命名查询中放置一些条件以满足您的需求。路易斯LL为您提供了条件,所以我不会重复。

答案 1 :(得分:2)

像这样?

SELECT *
FROM MyTable mt
WHERE (mt.firstCondition = :var1 OR :var1 = -1) AND mt.secondCondition = :var2
相关问题