0

SQL 쿼리를 작성하는 기준을 사용하는 검색 루틴이 있습니다 (제한 사항이 동적으로 추가 되었기 때문에). 특별한 경우 (매우 복잡한 경우)에는 테이블 반환 함수를 검색해야합니다 (모델 개체는 함수에 매핑 됨).nhibernate 기준을 사용하여 함수를 실행하는 방법?

결과는 다음과 같이 될 것이다 :

SELECT count(*) FROM dbo.GetSubStaffsLetterInstances(@staffId) WHERE LetterNumber="1234"; 

문제는 내가 (내가 제한 특성에 노력하고 있기 때문에 성공하지 않고 식 제한을 추가하는 시도 내 기준에 @staffId을 전달하는 방법을 몰라) IQuery에 매개 변수를 추가 할 수 있지만 ICriteria 개체를 사용하여 매개 변수를 추가하는 방법을 알지 못합니다.

+0

'Projection.SqlFunction을 반환 기억할 수 .UniqueResult<long>();을 시도 .. .)'하지만 from 절에서 지원되지 않는다고 생각합니다. – Firo

답변

1

나는 완전히 당신의 질문을 이해한다면, 당신은 표준 SQL에 다시 의존 할 수 있습니다 : -

var sql = "SELECT count(*) FROM dbo.GetSubStaffsLetterInstances(:staffId) 
    WHERE LetterNumber=:letterNum"; 

var count = session.CreateSqlQuery(sql) 
    .setInt32("staffId", 12345) 
    .setString("letternum", "A1") 
    .UniqueResult<int>(); 

아니면 하나의 HQL은 (

+0

SELECT count (*) FROM dbo.GetSubStaffsLetterInstances (: staffId) Where LetterNumber = : letterNum은 조건의 생성이며 동적으로 생성됩니다. 사용자가 검색하고자하는 것에 따라 다른 – Beatles1692

+0

HQL만이 테이블 값 함수로 작업 할 수 있습니다. 이 책을 읽으셨습니까? http://stackoverflow.com/questions/4249885/can-i-use-table-valued-function-as-query-source-in-nhibernate – Rippo

+0

감사합니다. 나는 내가 여기에서 자신의 길을 발견 할 수있다라고 생각한다 :) – Beatles1692