情况如下:
我有一个 Oracle 数据库,其中给出了数据库模式,所以我无法更改它。ID 是通过数据库生成的,是主键。OR-mapper 是一个自写的,我必须用 NHibernate 替换它。
我有两个表,它们只有一个关联,没有继承:
- 模式类型:ID、名称、来源
- 模式:ID、Mode_Type_ID、评论
我的课程如下:
- ModeType:公共属性:ID、名称、来源
- ModeProduction:公共属性:ID、ModeType_ID、评论
- ModeQualityCheck:公共属性:ID、ModeType_ID、评论
使用“旧” OR-mapper 类ModeProduction和ModeQualityCheck被持久化到表Mode中。例如,您要检索(然后写回)所有ModeProducts,ModeProducts取自表Mode,其中“ModeType_ID”等于“Origin” = 1的ModeType表中的“ID”。属性/列“起源”就像一个鉴别器,但没有继承。
那么,我如何在 NHibernate 中映射它以获得相同的效果:获取所有ModeProducts(并稍后将它们写回),其中ModeType表中的 Origin 为 1?
到目前为止,我有以下 XML 映射:
模式类型:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Domain"
namespace="Domain.Domain">
<class name="ModeTypeBase" table="MODE_TYPES">
<id name="Id" column="ID" access="nosetter.camelcase-underscore">
<generator class="sequence">
<param name="sequence">MODE_TYPES_SEQ</param>
</generator>
</id>
<property name="Name" column="NAME" not-null="true" />
<property name="Origin" column="ORIGIN" not-null="true" />
</class>
</hibernate-mapping>
ModeProduction: (Origin = 1 in table ModeType )
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Domain"
namespace="Domain.Domain">
<class name="ModeProduction" table="MODES">
<id name="Id" column="ID" access="nosetter.camelcase-underscore">
<generator class="sequence">
<param name="sequence">MODES_SEQ</param>
</generator>
</id>
<property name="Comment" column="COMMENT" not-null="true" />
<many-to-one name="ModeTypeObject" class="ModeType" column="MODE_TYPE_ID" cascade="save-update" not-null="true" />
</class>
</hibernate-mapping>
ModeQualityCheck:(表ModeType中的Origin = 0 )
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Domain"
namespace="Domain.Domain">
<class name="ModeQualityCheck" table="MODES">
<id name="Id" column="ID" access="nosetter.camelcase-underscore">
<generator class="sequence">
<param name="sequence">MODES_SEQ</param>
</generator>
</id>
<property name="Comment" column="COMMENT" not-null="true" />
<many-to-one name="ModeTypeObject" class="ModeType" column="MODE_TYPE_ID" cascade="save-update" not-null="true" />
</class>
</hibernate-mapping>
有人可以帮帮我吗?