nhibernate 매핑 : 다수의 사용자 유형
-
12-09-2019 - |
문제
Nhibernate를 처음 접하고 기존 솔루션을 수정 하여이 ORM을 사용합니다. 이상적으로는 스토리지 구조 및 객체 클래스는 동일하게 유지해야하므로 하나 또는 두 개의 매핑 문제를 발견합니다.
한 클래스 '돈'에는 가치와 통화가 있습니다. 값은 이중이며 통화는 통화 목록 테이블의 외국 키입니다.
돈은 많은 객체/테이블에서 유형으로 나타날 수 있으므로 CompositeUserType를 만들어 표준 매핑 통화와 함께 매핑했습니다. 이것은 잘 작동하지만 내 삶을 위해 Nhibernate에서 게으른 부하에 대한 통화 관계를 얻을 수는 없습니다. 우리는 유창하지만 HBM의 모든 포인터에는 행복합니다.
해결책
구성 요소를 사용해야하는 것처럼 보이며, 그 구성 요소 또는 CompositeUserTypes의 참조를 추가하는 방법을 볼 수 없습니다.
https://forum.hibernate.org/viewtopic.php?f=1&t=947719&start=0
http://wiki.fluentnhibernate.org/show/standardmappingcomponents
업데이트
CompositeUserType를 사용하고 NullSafeget () 메소드를 사용하여 엔티티에 프록시 엔드 포인트를 설정 하여이 문제를 해결했습니다.
public virtual object NullSafeGet(IDataReader dr, string[] names, ISessionImplementor session, object owner)
{
if (dr == null)
{
return null;
}
Money value = new Money()
{
Value = (double)NHibernateUtil.Double.NullSafeGet(dr, names[0], session, owner)
};
string entityName = session.BestGuessEntityName(value.Currency);
value.Currency = (CurrencyDetails)session.InternalLoad(entityName, (object)DEFAULT_CURRENCY_ID, false, false);
return value;
}
이것이 권장되는 방법인지 확실하지 않지만 작동합니다 :)
제휴하지 않습니다 StackOverflow