Hibernate Проблема наследования - PullRequest
0 голосов
/ 16 июля 2010

Я использую Hibernate 3.0.Я столкнулся с проблемой при использовании присоединенного подкласса.

Вот небольшой пример

У меня есть суперкласс Animal, и у меня есть 2 подкласса: Dog и Cat.Я использую объединенный подкласс для определения этого отношения.

когда я делаю

Query query=session.createQuery("from Animal");

, он выбирает объекты животного, собаки и кошки.

Это создаетпроблема, поскольку время выборки больше.

Любое решение для того же.

Ответы [ 2 ]

0 голосов
/ 16 июля 2010

Вы можете отключить неявный полиморфизм для этого класса, установив polymorphism="explicit" в отображении xml, или использовать аннотацию гибернации @Entity(polymorphism=PolymorphismType.EXPLICIT)

0 голосов
/ 16 июля 2010

Полагаю, вам нужны только экземпляры Animal, а не их подклассы?

Это немного сложно сделать в JPA, так как кошки тоже животные, поэтому они возвращаются.

Вы должны исключить их вручную из запроса, например:

from Animal a 
     where a.id not in (select c.id from Cat c)
       and a.id not in (select d.id from Dog d)

(Поскольку у вас есть эта проблема, возможно, полиморфизм не является идеальным решением в этом случае.)

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