题
我该如何使用我的名字?
@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),并且我想定义语句中的变量。但是,参数的数量不是恒定的。我想定义一个数组或类似的内容:数组[],我想在命名为querquery时将其设置。
解决方案
名字Query
@NamedQueries(
{
@NamedQuery(name = "GetAvailableProducts", query = "FROM Product p WHERE p.type= :type AND (p.available IN (:availableCollection) OR p.available = :available)",
}
设置参数
冬眠:
query.setParameterList('availableCollection', yourCollection);
JPA:
query.setParameter('availableCollection', yourCollection);
其他提示
你尝试了类似的东西吗
SELECT p FROM Product p WHERE p.type= :type AND (p.available IN
('foo', 'bar') OR p.available = :available)
(如果“可用”是字符串)
或者
SELECT p FROM Product p WHERE p.type= :type AND (p.available IN
(1, 2, 3) OR p.available = :available)
(如果有的话)?
in in jpql中的表达方式等于编写多个或“陈述”,在您的情况下,“ in”的示例是:
... p.available IN ('US', 'GB') ...
我认为等于:
... p.available = 'US' OR p.available = 'GB' ...
这是一个很好的解释的链接: OpenJPA:在表达中
编辑ps假设可自由化是字符串(字符类型)
Edit2作者已经编辑了很多次问题,以至于我无法跟进他:)至于关于传递表达数组的实际问题,这是stackoverflow上类似问题的链接: jpql在子句中 - 数组
不隶属于 StackOverflow