Hibernate автоматически добавляет 1 = 2 к сгенерированному запросу - PullRequest
2 голосов
/ 04 августа 2011

Hibernate генерирует SQL для следующего запроса:

select pcp.id from PersistentContentProfile pcp where pcp.service.id = :service_id and exists(select 1 from Subscription s where s.contentProfile.id = pcp.id and s.status in (:statuses))

как собственный запрос PostgreSQL:

select persistent0_.id as col_0_0_ 
from ems.nlt_content_profile persistent0_ 
where 
1=2 and 
persistent0_.service_id=? and 
(exists (select 1 
        from ems.nlt_subscription subscripti1_ 
        where subscripti1_.content_profile_id=persistent0_.id and 
        (subscripti1_.status in (?,?))))

Observed

'1 = 2'

добавляется в запрос?Почему это добавляется?В связи с этим записи не извлекаются.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2011

Я понял, что это из-за ошибки конфигурации. Я использовал @ForceDiscriminator, и в persistence.xml был настроен только абстрактный класс, а конфигурация для любого конкретного подкласса отсутствовала.

0 голосов
/ 19 августа 2011

Это может произойти по одной из двух причин.Это относится к полиморфным образованиям.Чтобы это исправить, вам нужно убедиться, что вы передаете базовый класс (не любой подкласс) вызову createCriteria.Вам также необходимо убедиться, что все подклассы, представленные в базе данных, зарегистрированы в hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...