我有一个包含一些字段和属性的表,我创建了一个具有相同字段和属性的视图(唯一的区别是如何计算一个字段)。 现在,我希望视图将扩展表,两个对象的hbm文件是相同的(当然希望名称)
C#代码如下所示:
public class Table
{
private int x;
private int y;
}
public class View : Table
{
}
但是,当我通过nhibernate更新Table对象时,它还更新了View对象,它进行了2次插入操作,我得到了一个异常: 更新或插入视图或功能' ??'失败,因为它包含派生或常量字段
任何人都可以解释\显示我如何在.hbm和.cs文件中进行这种继承
编辑:
hbm文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="???" assembly="???">
<class name="Table" table="Table" lazy="true" dynamic-update="true">
<id name="id" type="long" access="field">
<column name="ID"/>
<generator class="native"/>
</id>
<property name="x" type="int" access="field" not-null="false"/>
<property name="y" type="int" access="field" not-null="false"/>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="???" assembly="???">
<class name="View" table="View" lazy="true" dynamic-update="true">
<id name="id" type="long" access="field">
<column name="ID"/>
<generator class="native"/>
</id>
<property name="x" type="int" access="field" not-null="false"/>
<property name="y" type="int" access="field" not-null="false"/>
</class>
</hibernate-mapping>
答案 0 :(得分:0)
可能与此有关:
(10)polymorphism(可选,默认为隐式):确定是否 使用隐式或显式查询多态。
隐式多态意味着类的实例将是 由命名任何超类或已实现接口的查询返回 或类和该类的任何子类的实例 由命名类本身的查询返回。显式多态性 表示只返回类实例的查询 显式地命名该类以及该类命名的查询 仅返回在此声明中映射的子类的实例 一个或。对于大多数目的,默认情况下,polymorphism =&#34; implicit&#34;,是 适当。当两个不同时,显式多态性很有用 类被映射到同一个表(这允许&#34;轻量级&#34; 包含表列子集的类。)
取自:http://www.nhforge.org/doc/nh/en/#mapping-declaration-class