CreateSqlQuery를 사용하여 테이블을 쿼리하고 수식 속성이 포함 된 엔티티로 변환하려고하면 다음과 같은 예외가 발생합니다.수식 속성이있는 엔티티의 CreateSqlQuery
"값이 될 수 없다 널 매개 변수 이름 :. fieldName에"처음부터
그것은 공식 매핑을 가지고 기업에 createsqlquery를 사용할 수 있습니까?
CreateSqlQuery를 사용하여 테이블을 쿼리하고 수식 속성이 포함 된 엔티티로 변환하려고하면 다음과 같은 예외가 발생합니다.수식 속성이있는 엔티티의 CreateSqlQuery
"값이 될 수 없다 널 매개 변수 이름 :. fieldName에"처음부터
그것은 공식 매핑을 가지고 기업에 createsqlquery를 사용할 수 있습니까?
수식에는 CreateSQLQuery
을 사용할 수 있습니다.
다음은 개념 증명입니다.
<class name="Foo">
<id name="Id">
<generator class="hilo"/>
</id>
<property name="Data"/>
<property name="DataX2" formula="Data * 2"/>
</class>
그리고 여기에 쿼리 : 매핑 (클래스는 추측하기 어렵지 않다) 당신이 자세히 보면
var foos = session.CreateSQLQuery(
@"
select Id as {foo.Id},
Data as {foo.Data},
Data + Data as {foo.Data2}
from Foo
")
.AddEntity("foo", typeof(Foo))
.List<Foo>();
, 당신은 내가 선언이 아닌 다른 공식을 사용하고 있음을 볼 수 있습니다 매핑에서. NHibernate는 모든 프로퍼티들이 질의 내에있는 한 어떤 것도 허용한다.
17.1.2. Entity queries와 다음 내용을 읽는 것이 좋습니다.
많이 검색 한 후, 나는 다음과 같은
https://issues.jboss.org/browse/JBPAPP-6571
이 그들이 해결하지 않기로 결정했습니다 최대 절전 모드에서 실제 버그가 보인다 발견했다. 몇 가지 해결 방법이 있습니다. 가장 좋은 것은 속성 이름에 별칭을 사용하는 것입니다. 여기에 설명 된대로 별칭을 사용해야합니다 : 여기
http://nhibernate.info/doc/nh/en/index.html#querysql-aliasreferences
귀하의 솔루션은 존재하는 실제 버그 주변 일 것으로 보인다. –
@GaryB 버그가 있다고 생각되는 경우 트래커에서 문제를 열어서 부적절한 단위 테스트를 포함시켜야합니다. –
충분히 정교합니다. 나는 Nhibernate와 Hibernate 이슈 추적 사이의 관계에 익숙하지 않다. 내가 Hibernate 내에서 선언되었지만 Nhibernate 내에서 분명히 선언되지 않았기 때문에 버그 인 것을 알 수 있습니다. 따라서 Nhibernate에 대해 하나라고 부르는 것은 완전히 공정하지 않습니다. 이 시점에서 별칭 솔루션에 만족하므로 Nhibernate 문제를 만드는 것이 내 관심사에서 발견되지 않습니다. –