|
NHibernate и запрос по свойству подкласса
|
|||
---|---|---|---|
#18+
Пусть у нас есть 3 класса: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Напишем запрос: Код: plaintext 1. 2. 3. 4.
Все замечательно работает.... Пока у всех FastCarOwner'ов машины класса RacingCar... А вот как бы добавить проверку типа Car в запросе (или лучше приведение типа)? То что свойство Car в классе Owner имеет тип Car, а не RacingCar - это ошибка проектирования с точки зрения персистентных POCO-классов или вполне допустимый вариант? Вот еще нашел более расширенный вариант описываемой мною проблемы. тут И решение, которое предлагают там, более понятное. Но не ясно все таки стоит ли усложнять код в данном случае? Всем спасибо за внимание! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2011, 19:31 |
|
NHibernate и запрос по свойству подкласса
|
|||
---|---|---|---|
#18+
Criteria строится по вашему маппингу (по какой-то структуре в БД), задайте себе вопрос, "какой надо сгенерировать sql query ?" и дальше создавайте критерию с нужными алиасами чтоб получить этот запрос. например если у вас такая же стурктура таблиц как и классы: Car:Id<-RacingCar:Id(FK_Car) Car:Id<-FamilyCar:Id(FK_Car) Owner:CarId то вам просто надо джоин (алиас) делать по интересующей вам таблице RacingCar и у вас навернека будут только владельцы с этим типом машин ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 11:29 |
|
NHibernate и запрос по свойству подкласса
|
|||
---|---|---|---|
#18+
stimpi, спасибо за ответ, но я не до конца понял. :) Вы пишете: авторвам просто надо джоин (алиас) делать по интересующей вам таблице RacingCar и у вас навернека будут только владельцы с этим типом машин Однако такой алиас я написать не могу, так как у свойства Car в классе Owner стоит тип Car, а не RacingCar. Или могу? Каким образом можно в CreateAlias указать интересующую таблицу?? Так не заработает: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 13:51 |
|
NHibernate и запрос по свойству подкласса
|
|||
---|---|---|---|
#18+
вот так, но в маппинге RacingCar это subclass от Car Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2011, 16:17 |
|
|
start [/forum/topic.php?fid=17&tid=1350735]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
145ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 252ms |
0 / 0 |