java我可以在(…)中使用SQL吗namedQuery的语句?
如何在我的namedQuery中使用IN
@NamedQueries(
{
@NamedQuery(name = "GetAvailableProducts", query = new StringBuilder("").append("SELECT p FROM Product p WHERE p.type= :type AND (p.available IN ('I want to define changeable size of an array or sometinhg like that') OR p.available = :available)")),
}
我的意思是,我可以设置'type'参数(我将其定义为变量-->;:type),并希望在IN语句中定义变量。然而,参数的数量不是恒定的。我想定义一个数组或类似的东西:array[],我想在调用namedQuery时设置它
# 1 楼答案
JPQL中的表达式“IN”等于编写多个“OR”语句,在您的情况下,“IN”的示例如下:
我认为这等于:
这里有一个链接可以很好地解释:OpenJPA: IN Expression
编辑 假设P.available为字符串(字符类型)
EDIT2 作者多次编辑了这个问题,以至于我无法跟进:)至于关于在表达式中传递数组的实际问题,这里有一个关于StackOverflow的类似问题的链接:JPQL IN clause - Arrays
# 2 楼答案
你试过类似的东西吗
(如果“可用”是字符串)
或
(如果有,请提供一个号码)
# 3 楼答案
命名查询
设置参数
冬眠
JPA: