2015-04-13 2 views
0

Когда я пытаюсь преобразовать следующий запрос HQL:Hibernate 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) 
) 

Но если я добавьте 08 или 09 в предложение IN, это дает мне 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-3.3. Кто-нибудь тестировал эту проблему в последней версии спящего режима?

+0

Вы пробовали 8 и 9? 08 и 09 могут быть интерпретированы как (незаконные) восьмеричные числа. – mkm13

+0

Почему вы используете динамический запрос от переводчика? Не можете ли вы напрямую использовать запрос HQL? Как выглядит ваш запрос после добавления 08 и 09? – Arkantos

+0

Привет, mkm13, да, я пробовал с 8 и 9, и он отлично работает с ними, но, пожалуйста, продумайте, почему он считает 08 и 09 незаконными восьмеричными номерами, потому что снова запрос успешно выполняется за 010 ......... ..017 номеров. – LALIT

ответ

0

Вы попытаетесь заменить жестко закодированные параметры в разделе «in» с параметром запроса, например «: p». И затем укажите ваши параметры как List и call query.

+0

Если вы хотите предложить или попросить OP попробовать что-то, PLS сделать это в комментариях не как ответ :) – Arkantos