나는이 nhibernate로 액세스하는 이러한 레거시 테이블을 가지고 있지만 기본 엔티티 액세스는 괜찮지 만 실제로 조인 작업이 필요할 것입니다.nhibernate 매핑, 기본 및 외래 키없이 연결
이상적으로는 조인을 정의하는 데 기본 키와 외래 키가 있지만 이러한 테이블은 레거시 테이블이므로 테이블의 인덱스 인 인덱스는 성능상의 이유로 인덱스에 사용되므로 변경할 수 없습니다.
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="JobHeader " dynamic-update="true" table="JOB_HEADER">
<composite-id>
<key-property name="Company" column="JBH_COMPANY" type="String(6)" />
<key-property name="ContractRef" column="JBH_CONTRACT_REF" type="String(10)" />
<key-property name="JobRef" column="JBH_JOB_REF" type="String(10)" />
<key-property name="Status" column="JBH_STATUS" type="String(10)" />
</composite-id>
<property name="RowId" column="TK_ROWID" type="Int32" not-null="true" />
<property name="PropRef" column="JBH_PROP_REF" type="String(20)" not-null="false" />
</class>
</hibernate-mapping>
및 속성 매핑은 다음과 같습니다 :
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Property" dynamic-update="true" table="PROPERTY">
<composite-id>
<key-property name="Company" column="PRP_COMPANY" type="String(6)" />
<key-property name="Reference" column="PRP_REFERENCE" type="String(20)" />
</composite-id>
<property name="RowId" column="TK_ROWID" type="Int32" not-null="true" />
<property name="Name" column="PRP_NAME" type="String(40)" not-null="false" />
</class>
</hibernate-mapping>
Jobheader 그것에서
은 어쨌든 난 JobHeader 테이블과 JobHeader 맵핑이 순간에이 같이 보입니다
속성 테이블이 속성 "참조"를 보유하기 위해 "PropRef"를 사용합니다.
나는 아마 다음과 같이 보일 것입니다 그래서 JobHeaderJoinedProperty 라고 할 것입니다 새 매핑 파일을 만들 싶습니다 내 JobHeaderJoinedProperty 엔티티는 다음과 속성 개체에 액세스 할 수있을 것이라고 기대하고 그리고
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="JobHeaderJoinProperty" dynamic-update="true" table="JOB_HEADER">
<composite-id>
<key-property name="Company" column="JBH_COMPANY" type="String(6)" />
<key-property name="ContractRef" column="JBH_CONTRACT_REF" type="String(10)" />
<key-property name="JobRef" column="JBH_JOB_REF" type="String(10)" />
<key-property name="Status" column="JBH_STATUS" type="String(10)" />
</composite-id>
<property name="RowId" column="TK_ROWID" type="Int32" not-null="true" />
<property name="PropRef" column="JBH_PROP_REF" type="String(20)" not-null="false" /> </class>
<bag name="Property" fetch="join" >
<key column="Reference" property-ref="PropRef" />
<one-to-one class="Property"/>
</bag>
</class>
</hibernate-mapping>
을 이것 :
public virtual Property Property
{
get
{
return this.property;
}
set
{
this.property = value;
}
}
nhibernate를 통해 두 개의 레거시 테이블에 가입하는 것은 너무 까다로워하지 않아야합니까?! 정말 단지 내부를 복제 할
는 SQL이 같은 곳이 될 것입니다 가입 :
Select * from job_header inner join property on property.reference = job_header.propref