我有一个映射文件,将某个列指定为
为了更清楚地说明。在数据库中:
当然,解决客户的问题很简单,我只需更正映射文件,使其正确地表示我的实体即可。但真正的问题是为什么Hibernate没有抱怨呢?
我已经问过一些在Hibernate方面更有经验的工程师,但他们中没有人见过这种情况。
那么,有人能给我一个提示吗?
编辑:只想强调我们的测试环境和客户端的代码完全相同,在两种情况下,
not-null="true"
。这是一个错误,因为Oracle数据库中的表列设置为NULL
。但是我们直到现在(创建映射文件一年多之后),才注意到了这一点,因为Hibernate一直在“忽略”它。这可能吗?为了更清楚地说明。在数据库中:
在映射文件中:
CREATE TABLE db.my_table
(...)
my_column NUMBER(10,0) NULL, (...)
然后在Java代码中:
<column name="MY_COLUMN" precision="10" scale="0" not-null="true">
这段代码在我们的环境中可以工作。一直都是这样。但是一些客户遇到了
getHibernateTemplate().saveOrUpdate(myEntity);
getHibernateTemplate().flush();
not-null property references a null or transient value
的问题,当我调试代码时,这没有任何意义。据我所知,这段代码根本不应该能运行。当然,解决客户的问题很简单,我只需更正映射文件,使其正确地表示我的实体即可。但真正的问题是为什么Hibernate没有抱怨呢?
我已经问过一些在Hibernate方面更有经验的工程师,但他们中没有人见过这种情况。
那么,有人能给我一个提示吗?
编辑:只想强调我们的测试环境和客户端的代码完全相同,在两种情况下,
myEntity
对象的myColumn
属性都设置为NULL
。因此,令我困惑的是,为什么它在我们的环境中不会产生任何异常。