我是JPA的新手,这是我的一个查询,我有几个参数作为查询的一部分,任何参数都可以是null值
@Query(value = "SELECT ord.purchaseOrderNumber,ord.salesOrderNumber,ord.quoteNumber"
+ " FROM Order ord WHERE ord.purchaseOrderNumber LIKE :poNumber% "
+ " AND ord.salesOrderNumber LIKE :soNumber "
+ " AND ord.quoteNumber = :quoteNumber "
Run Code Online (Sandbox Code Playgroud)
上面的示例如果我的输入参数:quoteNumber为NULL则我不应该通过ord.quoteNumber = NULL进行过滤,那么如何避免这种情况
cca*_*mxc 11
您可以添加一组条件来"忽略"具有空值或空字符串的属性.
例如
+ " AND (ord.quoteNumber = :quoteNumber or :quoteNumber is null or :quoteNumber = '' ")
Run Code Online (Sandbox Code Playgroud)
不幸的是,= 比较不适用于空值,因为您有谓词 IS NULL、IS NOT NULL。当 quoteNumber 为 null 和不为 null 时,这意味着您需要不同的查询。您可以在 Java 代码中检查 null,然后选择要调用的正确查询。如果订单、报价数字不能是空字符串 ("")(它们不应该),那么您可以将缺少给定数字表示为空字符串,并始终使用正常比较。只需记住设置您的数据库架构,列不能为空,并且它们的默认值为“”。顺便说一句,您的列名称建议数字,但您正在使用字符串比较,我希望它没问题。
| 归档时间: |
|
| 查看次数: |
14201 次 |
| 最近记录: |