2011-04-27 7 views
1

열 이름에 물음표가 포함 된 속성이있는 엔티티가 있습니다. 물음표에 대한 매개 변수를 대체하는 대신 HQL 쿼리가 올바르게 열 이름 (SQL Server의 경우 [])으로 SQL을 올바르게 생성하도록 열 이름을 매핑하는 방법은 무엇입니까? 내가 backticks 또는 대괄호에 열 이름을 래핑 시도했지만이 작동하지 않습니다.NHibernate의 열 이름에서 물음표 문자를 이스케이프 처리합니다.

답변

2

Backticks가 제대로 작동합니다. 하지 HQL에서, 오직 매핑 파일을 사용해야합니다 :

<property name="Data1" column="`Data1?`" /> 

이 쿼리 :이 SQL에서

session.CreateQuery("select Data1 from Foo").List(); 

결과 :

select foo0_.[Data1?] as col_0_0_ 
from Foo foo0_ 

업데이트 :이 NHibernate 3.1의 버그입니다. Jira issue created

+0

이것은 나를 위해 작동하지 않습니다. '<서브 클래스 이름 = "방문"> <속성 이름 = "IsFixed 등록"열 = "\'고정 \ '?"/> ' 내가이 쿼리를 실행하면 : 나는이 매핑을 가지고 가 '('방문에서 선택 방문은 방문 ") _session.CreateQuery를 반환 목록 (); ' 을 나는이 SQL을 얻을 :.. 는'visit0 선택 _ [고정 @의 P0] Fixed14_22_ 로 dbo.tblVisits는 을 visit0_'에서 SqlException 결과가 잘못되었습니다. 열 이름 'Fixed @ p0'이 잘못되었습니다. –

+0

@MartinIngham : 어떤 NH 버전을 사용하고 있습니까? 방언과 운전자? –

+0

NH 버전 = 3.1.0.4000, dialect = NHibernate.Dialect.MsSql2005Dialect, 드라이버 = NHibernate.Driver.SqlClientDriver DB 서버 = MS SQL Server 2008 R2, 공급자 = System.Data.SqlClient –

관련 문제