Исключение «Entity Not Mapped» при использовании HQL.Работает с критериями - PullRequest
1 голос
/ 10 сентября 2010

Перед тем, как говорить о проблеме, приведем некоторые предыстории:

  1. Есть 3 сборки.
    1. Тот, который содержит класс Entity и проблему HQL.
    2. Тесты.
    3. Веб-сайт.
  2. Все тесты в сборке Tests для HQL проходят.
  3. Исключение выдается на веб-сайте.
  4. Если я использую эквивалентный код критерия, он прекрасно работает во всех сборках, вызывающих его.

На проблему. При вызове следующего HQL

var commentCount = 
    session.CreateQuery("select e.CommentCount from Entity e where e.Id = :entityId")
    .SetParameter("entityId", string.Format("{0}:{1}", entityType, entityId))
    .UniqueResult<int>();

это исключение выдается:

Объект не отображается [выберите e.CommentCount из объекта e, где e.Id =: entityId]

Как уже упоминалось, я могу просто перейти на использование Criteria, но я боюсь, что может быть основная проблема, которую скрывает использование Criteria.

Есть идеи? Спасибо.

Ответы [ 3 ]

2 голосов
/ 10 сентября 2010

Я забыл добавить сборку в мою hibernate-конфигурацию!

Вот код:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory name="demo">
        <mapping assembly="Users" />
    </session-factory>
</hibernate-configuration>

Я не уверен, почему критерии работали.Я предполагаю, что это как-то связано с явно определенным типом.

0 голосов
/ 12 сентября 2010

Добавьте auto-import="true" к вашим hibernate-mapping элементам.Это должно позаботиться об этом.

0 голосов
/ 10 сентября 2010

Использование C # собственной as string:

var commentCount =  session.CreateQuery("select e.CommentCount from Entity e where e.Id = :entityId and rownum <= 1")
                           .SetParameter("entityId", string.Format("{0}:{1}", entityType, entityId))
                           .UniqueResult() as string;

Обратите внимание, что вам, возможно, придется добавить предложение and rownum <= 1 в конце.

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