2

情况如下:

我有一个 Oracle 数据库,其中给出了数据库模式,所以我无法更改它。ID 是通过数据库生成的,是主键。OR-mapper 是一个自写的,我必须用 NHibernate 替换它。

我有两个表,它们只有一个关联,没有继承:

  1. 模式类型:ID、名称、来源
  2. 模式:ID、Mode_Type_ID、评论

我的课程如下:

  1. ModeType:公共属性:ID、名称、来源
  2. ModeProduction:公共属性:ID、ModeType_ID、评论
  3. ModeQualityCheck:公共属性:ID、ModeType_ID、评论

使用“旧” OR-mapper 类ModeProductionModeQualityCheck被持久化到表Mode中。例如,您要检索(然后写回)所有ModeProductsModeProducts取自表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>

有人可以帮帮我吗?

4

0 回答 0