2011-12-12 3 views
0

기존 Oracle 10g 데이터베이스가 있습니다. 이 데이터베이스의 테이블 ITEMDELIVERY에는 DELIVERY_DATE 열이 있습니다. 테이블이이 열로 분할됩니다. 이 때문에이 테이블의 기본 키는 ITEMDELIVERY_IDDELIVERY_DATE 열을 포함하는 복합 키입니다.
FK가 ITEMDELIVERY 인 다른 테이블 ITEMDELIVERYDETAIL가 있습니다. 파티셔닝의 이점과 자체적으로 파티셔닝 할 수 있으려면이 테이블의 컬럼은 PARTITION_DATE입니다. ITEMDELIVERY_IDPARTITION_DATE은 FK를 ITEMDELIVERY으로 형성합니다.파티션 구분자 열이있는 분할 된 테이블 매핑

PARTITION_DATEITEMDELIVERYDETAIL에 의미가 없으며 기술적 인 이유로 만 존재합니다. 이 때문에 내 엔티티에서이 열을 지정하지 않는 것이 좋습니다.
는 내가 IAutoMappingOverride<ItemDeliveryDetail>의 구현에 다음과 같은 시도 :

을하지만, 나는 다음과 같은 예외 얻을 작동하지 않았다 '속성에 대한 게터를 찾을 수 없습니다 :

NHibernate.PropertyNotFoundException을 배달 시간 'in class'Domain.ItemDeliveryDetail '

내 목표를 달성하기위한 방법이 있습니까?

+0

이 보이는 제정신 : http://stackoverflow.com/questions/4027032/query-only -properties-with-fluent-nhibernate. 대답은 받아 들여지지 않으므로 Fluent Nhibernate로 작동하는지 확실하지 않습니다. –

+0

@GertArnold : 제안 해 주셔서 감사합니다. 그러나 이것이 내가 무엇인지 생각하지 않습니다. 'ITEMDELIVERYDETAIL' 테이블에 새로운 행을 삽입하려면'PARTITION_DATE' 컬럼은'NULL'이 아니어야합니다. 쿼리 전용 속성의 개념을 올바르게 이해한다면 이는 불가능합니다. –

+0

아 물론! 그런 다음 ['access = "private"버전의 FluentNhibernate] (http://wiki.fluentnhibernate.org/Fluent_mapping_private_properties)에 의존해야합니다. –

답변

2

이 질문에 대한 답변은 question에 표시 된 에 대한 참조를 ItemDeliveryDetail에 사용하고 있다고 생각합니다.

mapping.References(x => x.ItemDelivery) 
    .Columns("ITEMDELIVERY_ID", "PARTITIONDATE"); 

이 만드는 그것은 눈에 보이지 않는,를 automaticly 작성 및 쿼리 전용 속성이 필요한 것처럼 부모에 대한 참조가

+0

언뜻보기에 이것은 더 잘 들립니다. –

+0

"이것은 보이지 않게하고, 자동으로 채워지고 부모에 대한 참조는 정상입니다."-> 이것이 사실이라면, 완벽 할 것입니다.다른 질문을 해결하자마자 확인해 보겠습니다. –

+0

명시 적 속성 제거 및 매핑은 작동하지만 작동시키기 위해 필요합니다. 또한 대답에 링크 된 다른 질문에 대한 해결책이었습니다. –

0

도메인에 관심이 없다면 왜 매핑합니까? 아이템의 프로퍼티를 매핑하려면 ItemDelivery 클래스 매핑에 추가하십시오.

+0

나는 따라 가지 않는다. 어떻게 든 그 열을 매핑해야합니다. 그렇지 않으면 PK의 일부가 비어 있기 때문에 새로운 객체를 테이블에 삽입 할 수 없습니다. –

1

"classic"NHibernate에서 속성 매핑에 access="private"을 추가하여 비슷한 문제를 해결했습니다. 이것은 Hibernate에게 모델의 나머지 부분에는 보이지 않는 private 멤버 변수에 매핑하도록 지시한다.

Fluent NHibernate는 자신의 말로는 이상적은 아니지만 기능을 지원한다는 점에서 solution을 가지고 있습니다.

관련 문제