Я все еще новичок в Hibernate и пытаюсь использовать его для веб-сайта, который унаследовал. К сожалению, это означает, что иногда схемы db не всегда имеют смысл.NHibernate: Как исключить класс, который является частью соединения с использованием API критериев.
С учетом сказанного, я пытаюсь построить следующий HQL запрос с использованием критериев API
from TableB b where b.id = :id and b.TableAProperty.UserId = :userId
вышеприведенное утверждение HQL генерировать SQL, который будет выбирать и возвращать TableB только что то, что я хочу, чтобы это произошло. Однако, используя приведенные ниже инструкции Critera API, сгенерированный оператор SQL выбирает поля для TableB и TableA.
DataProvider.Session
.CreateCriteria<TableB>()
.Add(Expression.Eq("Id", id))
.CreateCriteria("TableA")
.Add(Expression.Eq("UserId", userId))
.UniqueResult<TableB>()
;
В идеальном мире я мог бы обновить схемы db, чтобы иметь больше смысла, но, увы, я не могу. Любая помощь по этому вопросу будет принята с благодарностью.
Ваше предположение верно. – rmblstrp