2009-11-10 2 views
1

Char 컬럼 유형 (고정 문자열)을 사용하는 레거시 데이터베이스에 대해 NHibernate를 사용하고 있습니다. char 열을 속성의 문자열에 매핑합니다. 현재 내가 쿼리하는 값에 공백이 채워지지 않아 문자열 길이가 char 열 길이와 같지 않으면 현재 내 조건 쿼리가 실패합니다. 나는 모든 값을 위해 수동으로이 방법으로 패드를 사용하고 싶지 않습니다. 나는 NHibernate가 나를 위해 이것을 처리 할 것이라고 생각했다. NHibernate : 오라클의 Char 컬럼 지원

나는 다음과 같은 옵션을 사용하여 매핑 시도 :

<property name="Account"> 
    <column name="Account" sql-type="char(9)" length="9"/> 
</property> 

<property name="Account" type="AnsiChar"> 
    <column name="Account"/> 
</property> 

첫 번째는 어떤 영향을하고 두 번째 매핑 문제는 속성 유형이 있어야 할 것으로 가정한다는 것이다 문자열이 아니라 System.Char 형식이어야합니다. Oracle의 Char 데이터 형식을 일반 문자열에 매핑 할 수있는 매핑을 찾고 있습니다.

+0

'NHibernate.Dialect'가 올바르게 설정 되었습니까? –

+0

예, NHibernate.Dialect.Oracle10gDialect로 설정됩니다. –

답변

0

문자열을 자르기 위해 UserType을 만들어야했습니다.

+0

걱정스럽게도 데이터베이스에서 반환 된 패딩 된 문자열이 아니며, 내 기준 쿼리 매개 변수 값이 적절한 길이로 채워져 있어야합니다. 객체를 선택하십시오. –

+0

올바르게 리콜하면 UserType 구현의 일부입니다. 트림 된 문자열을 비교하려면 equals를 재정의해야했습니다. WHERE 절의 DB에 보내기 전에 문자열을 채울 필요는 없습니다. 자동으로 패드를 채워야합니다. –