I가 다음 코드이드
string idName = builder.IdentifierName;
Disjunction disjunction = Restrictions.Disjunction();
IList ids = new ArrayList(entityInfos.Length);
foreach (var entityInfo in entityInfos)
{
ids.Add(entityInfo .Id);
}
disjunction.Add(Restrictions.In(idName, ids));
criteria.Add(disjunction);
criteria.List();
(나는 그것이 NHibernate.Search에서 코드를 단순화, 그것은을 작성하지 않은)
값 매핑되지 않은 ID 목록으로 개체를로드하기위한 올바른 방법 idName
이 맞습니다 ("Id"
). 내가 이드 엔티티 속성에 매핑이없는 내지도에서
<id column="Id" type="int">
<generator class="native" />
</id>
, 그것은 예외가 발생합니다 :
[QueryException: could not resolve property: Id of: MyType]
NHibernate.Persister.Entity.AbstractPropertyMapping.ToType(String propertyName) +326
NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetTypeUsingProjection(ICriteria subcriteria, String propertyName) +416
NHibernate.Criterion.InExpression.AssertPropertyIsNotCollection(ICriteriaQuery criteriaQuery, ICriteria criteria) +41
NHibernate.Criterion.InExpression.ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters) +49
NHibernate.Criterion.Junction.ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters) +448
NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetWhereCondition(IDictionary`2 enabledFilters) +354
NHibernate.Loader.Criteria.CriteriaJoinWalker..ctor(IOuterJoinLoadable persister, CriteriaQueryTranslator translator, ISessionFactoryImplementor factory, ICriteria criteria, String rootEntityName, IDictionary`2 enabledFilters) +516
NHibernate.Loader.Criteria.CriteriaLoader..ctor(IOuterJoinLoadable persister, ISessionFactoryImplementor factory, CriteriaImpl rootCriteria, String rootEntityName, IDictionary`2 enabledFilters) +220
NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results) +364
NHibernate.Impl.CriteriaImpl.List(IList results) +63
NHibernate.Impl.CriteriaImpl.List() +46
무엇 매핑되지 않은 경우에도 Id
으로 검색 할 수 있도록 제한 및 기준을 만드는 올바른 방법은 무엇입니까?
감사를 참조하는 키워드 "ID"(모두 소문자)를 사용할 수 있습니다,이 작동합니다. –