我继承了一个应用程序以执行一些错误修复。该语言是C#,它使用Hibernate与SQL Server 2016数据库进行通信。
我有一个带有“元素类型”的表,看起来像这样: -0:A型 -1:B型 -2:类型C
表“元素”具有类型的字段。该字段为“ int NOT NULL”,带有指向另一张表的Foregin键。
如果我尝试插入“ Type = 0”的元素,则Hibernate会引发此错误:
not-null property references a null or transient value
如果我检查由Hibernate在控制台中编写的日志,我会发现它正在尝试为该字段插入NULL值:
@p27 = NULL [Type: Int32 (0)]
“ Type”的任何其他值都可以正常工作。
这是我第一次使用Hibernate,找不到适用于.NET应用程序的任何解决方案。
“类型”表的映射:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="aaa"
namespace="aaa">
<class name="Type" table="Type">
<id name="COD" column="COD">
<generator class="native" />
</id>
<property name="DESC" column="DESC" />
</class>
</hibernate-mapping>
另一个:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="aaa"
namespace="aaa">
<class name="Element" table="Elements">
<id name="COD" column="COD">
<generator class="native" />
</id>
<property name="Type" column="Type" />
<property name="DESC" column="DESC" />
</class>
</hibernate-mapping>