我的Springboot应用程序的WEB-INF文件夹中有orm.xml文件。 我在orm.xml文件中没有几个命名的本机查询。
我想根据查询中参数的值在查询中添加一个条件。
我正在寻找这样的东西:
<named-native-query name="MyReport.countInventory">
<query>
SELECT COUNT(*) AS COUNT
FROM
Inventory
WHERE
<if :date>
add_date = :date
</if>
</query>
</named-native-query>
答案 0 :(得分:1)
这对于JPA是不可能的。 它只允许简单的SQL语句,而无需任何条件处理。
在许多情况下,实际上可以按照注释中所述的 Turo 在SQL本身中实现所需的条件逻辑。
由于您似乎正在使用Spring Data JPA,因此也可以使用Specifications
动态创建条件。
另一种替代方法是使用MyBatis,它允许以与问题概述类似的方式构造SQL语句。 以下示例取自http://www.mybatis.org/mybatis-3/dynamic-sql.html
<select id="findActiveBlogWithTitleLike"
resultType="Blog">
SELECT * FROM BLOG
WHERE state = ‘ACTIVE’
<if test="title != null">
AND title like #{title}
</if>
</select>