2010-11-28 3 views
0

Imagine У меня есть C1, C2 и C3 классы. Предположим, что мы можем иметь string dummy = c1.ContainerC2.ContainerC3.Prop1. Есть ли какое-либо ограничение, которое не позволяет мне создавать псевдоним напрямую с C3 без наличия других критериев в критериях? Например:Есть ли у DetachedCriteria/ICriteria какие-либо ограничения на глубину соединения?

DetachedCriteria criteria = DetachedCriteria.For<T>("root"); 
criteria.CreateAlias("ContainerC2.ContainerC3", "alias_abcdef"); 

У меня проблемы с этим. Он генерирует SQL-запрос с последующим сообщением об ошибке:

Идентификатор из нескольких частей «alias_cont1_.HotelName» не может быть связан.

ответ

1

Вы не можете перейти в ContainerC2 напрямую с помощью CriteriaAPI. Вместо этого вы должны сделать следующее:

DetachedCriteria criteria = DetachedCriteria.For<T>("root"); 
criteria.CreateCreteria("ContainerC2") 
     .CreateAlias("ContainderC3", "alias_abcdef"); 
+0

Не могли бы вы объяснить, почему? – 2010-11-29 06:15:11