2010-03-18 3 views
3

데이터베이스에 매핑 된 Customer 클래스가 있고 모든 것이 ok라고 가정합니다.NHibernate : 매핑 된 값을 얻는 방법?

이제 응용 프로그램에서 NH가 Customer.FirstName이 매핑되는 것으로 알고있는 열 이름을 검색하려고한다고 가정합니다.

어떻게하면됩니까?

답변

5

당신은 NHibernate.Cfg.Configuration 통해 데이터베이스 필드 이름에 액세스 할 수 있습니다

// cfg is NHibernate.Cfg.Configuration 
// You will have to provide the complete namespace for Customer 
var persistentClass = cfg.GetClassMapping(typeof(Customer)); 
var property = persistentClass.GetProperty("FirstName"); 
var columnIterator = property.ColumnIterator; 

ColumnIterator 속성은 IEnumerable<NHibernate.Mapping.ISelectable>를 반환합니다. 거의 모든 경우에 속성이 단일 열에 매핑되므로 열 이름은 property.ColumnInterator.ElementAt(0).Text을 사용하여 찾을 수 있습니다.

+0

나는 이것에 착각 할지도 모르지만 나는 유형을위한 persister에 몇몇 방법을 질문해서 가능하다는 것을 믿는다. 당신은 공장에서 persister를 얻을 수 –

+0

persister에서 개체에 대한 많은 정보를 얻을 수 있지만 데이터베이스 열 이름에 액세스하는 방법을 찾을 수 없습니다. 복잡한 API이므로 놓친 것 같습니다. –

0

나는 그것이 가능하다는 것을 알지 못합니다.

나는 최선의 방법은 .xml 파일을 사용하여 매핑을 수행하고 응용 프로그램과 함께 패키징하며 런타임에 내용을 읽는 것이라고 생각합니다. 나는 런타임시에 최대 절전 모드 어노테이션 (Java lingo를 용서)을 쿼리 할 수있게 해주는 API를 인식하지 못하고있다.

업데이트 : Hibernate org.hibernate.Hibernate 클래스는 "구성"속성에 액세스 할 수있는 방법을 제공하지 않기 때문에 Jamie의 솔루션에 따르면 NHibernate와 Hibernate는 서로 다른 API를 가지고 있습니다.