如何在JPQL中使用in子句?

时间:2013-07-22 11:34:28

标签: java jpa jpql

我试过这段代码

   Query q = em.createQuery("SELECT c FROM Category c where c.id in 1" );

但我有这个错误

 An exception occurred while creating a query in EntityManager: 
    Exception Description: Syntax error parsing [SELECT c FROM Category c where c.id in 1]. 
    [31, 40] The expression is not a valid conditional expression.

有什么问题?

2 个答案:

答案 0 :(得分:3)

paragraph 10.2.5.8 of the JPQL Language Reference。它应该看起来像where c.id in (1)

答案 1 :(得分:1)

以下是来自文档的IN谓词的JPQL兼容示例。

  1. 从付款p中选择p,其中类型(p)在(CreditCardPayment, WireTransferPayment)

  2. 从客户c中选择c,其中c.hqAddress.state位于('TX','OK', 'LA','NM')

  3. 从客户c中选择c,其中c.hqAddress.state位于?

  4. 从客户c中选择c,其中c.hqAddress.state位于(     选择dm.state     来自DeliveryMetadata dm     其中dm.salesTax不为null)

  5. 选项2.似乎您正在寻找,您可以尝试以下查询。

      

    SELECT c FROM Category c其中c.id in(1)

    但是如果你给出恒定的单一值,为什么你不使用=