org.hibernate.PropertyValueException: not-null property references a
null or transient value
我正在使用Java,Hibernate和MySQL 5.1.52-log版本。
我对默认的解释是,如果我没有为列提供值,Hibernate将在我尝试保存此对象时插入默认值。
HBM文件,
<property name="isActive" type="java.lang.Short">
<column name="IsActive" not-null="true" default="1"/>
</property>
答案 0 :(得分:1)
根据PropertyValueException的文档,如果在声明为not-null =“true”的属性中设置null值,然后尝试持久化/更新它,那么您将获得此异常。
请参阅http://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/PropertyValueException.html
您应该从配置中删除not-null =“true”属性(因为not-null的默认值为false),然后数据库应插入您在配置中为您指定的默认值(在此案例'1')。
<强> [UPDATE] 强>
我更愿意将此作为评论在fujy的回答中,但我还不允许对其他答案发表评论。如果删除'not-null'属性(如下所示),它是否按预期工作?我相信这就是导致您获得例外的原因。
<property name="isActive" type="java.lang.Short">
<meta attribute="default-value">1</meta>
<column name="IsActive" />
</property>
答案 1 :(得分:0)
您可以直接在模型上设置
private Short isActive = 1;
或者您可以在hbm
文件中尝试此操作
<property name="isActive" type="java.lang.Short">
<meta attribute="default-value">1</meta>
<column name="IsActive" not-null="true"/>
</property>