IN子句中的Hibernate HQL问题

时间:2015-04-13 09:50:56

标签: java hibernate hql

当我尝试转换以下HQL查询时:

select distinct rgp.dgRegexGroups.regexGroup, 0 FROM DgRegexPatterns rgp where rgp.dgRegexGroups.id not in ( 1,05,6,07)

使用Hibernate动态查询转换器,它为我提供了正确的SQL:

select
  distinct dgregexgro1_.regex_group as col_0_0_,
  0 as col_1_0_ 
 from
  dg_regex_patterns dgregexpat0_,
  dg_regex_groups dgregexgro1_ 
 where
  dgregexpat0_.regex_group_id=dgregexgro1_.id 
  and (
   dgregexpat0_.regex_group_id not in  ( 1,5,6,7 )
  )

但是如果我在IN子句中添加08或09,它会给我QuerySyntaxException。

    org.hibernate.hql.ast.QuerySyntaxException: unexpected token: 9 near line 1, column 136 [select distinct rgp.dgRegexGroups.regexGroup, 0  FROM 
com.dataguise.hibernate.DgRegexPatterns rgp where rgp.dgRegexGroups.id not in ( 09)]

有谁知道为什么会这样?这是一个特定于hibernate版本的问题吗?因为我目前正在使用Hibernate-3.3版本。有人在最新的hibernate版本中测试过这个问题吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用查询参数替换“in”部分中的硬编码参数,例如“:p”。然后将您的参数路径为List并调用查询执行。