2012-11-08 1 views
0

필터를 사용하여 매핑을 사용하고 있습니다.Session.Get 및 Session.Load 명령이 필터를 무시합니다.

하지만 내 개체를 유지하려고 할 때 먼저 스냅 숏을 가져 오려고합니다 (내 ID가 문자열이기 때문에).

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="DomainLayer.General" assembly="DomainLayer"> 
    <class name="Fund" table="OPENA_BriefW" lazy="false"> 
    <id name="Id" column="`BRWNUMMER`" type="string" > 
    </id> 

    <property name="Name" column="`BRWNAAM`" type="string" /> 
    <property name="Contact" column="`BRWNAAM2`" type="string" /> 
    <property name="Address" column="`BRWADRES`" type="string" /> 
    <property name="City" column="`BRWSTAD`" type="string" /> 
    <property name="Zip" column="`BRWPOST`" type="string" /> 
    <property name="Phone" column="`BRWTELEFOON`" type="string" /> 
    <property name="Fax" column="`BRWTELEFAX`" type="string" /> 
    <property name="Iban" column="`brw_iban`" type="string" /> 
    <property name="BankAccount" column="`BRWBANKNU`" type="string" /> 
    <property name="Swift" column="`brw_swift`" type="string" /> 
    <property name="ReceiveOffice" column="`BRWONTVKANT`" type="int" /> 
    <property name="RegionDirection" column="`BRWGEWESTDIR`" type="int" /> 

    <many-to-one name="Country" class="DomainLayer.General.CodeDescription" fetch="join" not-found="ignore"> 
     <formula>'ALG'</formula> 
     <formula>'0'</formula> 
     <formula>'WG030'</formula> 
     <column name="`BRWLAND`" /> 
     <formula>:LanguageFilter.Id</formula> 
    </many-to-one> 

    </class> 
</hibernate-mapping> 

필터가 보듯이 : LanguageFilter.Id가 문제의 원인입니다. 정상적인 .List()를 수행하면 문제가 발생하지 않습니다.

하지만 지속될 때, 먼저 기금이 이미 예/아니오로 존재하는지 확인하고 싶습니다. .Get (Id로).

그런 다음 오류가 발생하여 스냅 샷을 검색 할 수 없습니다. 내 쿼리에서 그는 대체하지 않습니다 : LangaugeFilter.Id를 내 세션에 설정된 유효 값으로 설정하십시오.

나는 그렇게처럼 내 세션에 대한 필터를 사용 : 여기

session.EnableFilter("LanguageFilter").SetParameter("Id", 1); 

필터 데프 매핑입니다 :

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <filter-def name='LanguageFilter' > 
    <filter-param name='Id' type='System.Int32' /> 
    </filter-def> 
</hibernate-mapping> 

이 포스트 (주석 4) http://ayende.com/blog/3993/nhibernate-filters 말씀에 Session.get 및로드 무시 필터.

변수가 필요하기 때문에 대안이 있습니까?

답변

1

좋아, 내가 한 일은 다음과 같다 : 나는 SaveOrPersist를 사용하지 않았지만 새 것이었을 때 저장하고 오래된 것을 가지고있을 때 지속한다. 이것은 추가 취득을 실행하지 않았다.