我可以将SQL的IN(...)语句用于namedQuery吗?

kam*_*aci 10 java sql named-query

如何在我的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)")),  
 }
Run Code Online (Sandbox Code Playgroud)

我的意思是我可以设置'type'参数(我把它定义为变量---->:type),我想在IN语句中定义变量.但是参数的数量不是恒定的.我想定义一个数组或类似的东西:array []我想在调用namedQuery时设置它.

Tad*_*pec 26

NamedQuery

@NamedQueries(  
{   
 @NamedQuery(name = "GetAvailableProducts", query = "FROM Product p WHERE p.type= :type AND (p.available IN (:availableCollection) OR p.available = :available)",  
}
Run Code Online (Sandbox Code Playgroud)

设置参数

休眠:

query.setParameterList('availableCollection', yourCollection);
Run Code Online (Sandbox Code Playgroud)

JPA:

query.setParameter('availableCollection', yourCollection);
Run Code Online (Sandbox Code Playgroud)