如何在命名查询中将列名作为参数发送

How to send Column Name as parameter in Named Query

我正在编写一个命名查询来获取基于年度的数据。

查询

SELECT * FROM table1
   WHERE ((year1 > 0) OR (year2> 0 OR (beyondYear2> 0)));

查询工作正常。从 JSP 我将选择年份,因此应该加载该特定年份的记录。上面的查询加载了所有年份范围的数据。有什么方法可以将 Column Name 作为参数传递,以避免每年编写查询吗?

SELECT * FROM table1
 WHERE ( :yearRange > 0);

:yearRange : 作为参数。

您可以将参数用作开关:

SELECT * FROM table1
  WHERE ((year1 > 0 AND :yearRange='year1') OR (year2> 0 AND :yearRange='year2' OR (beyondYear2> 0 AND :yearRange='beyondYear2')));