我该如何使用我的名字?

@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在子句中 - 数组

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top