尝试在表中插入行时,我从hibernate收到以下错误消息:
org.hibernate.exception.ConstraintViolationException:Column 'priority'不能为null
我知道我可以在代码中添加一行来设置值,但是还有许多其他实例,程序依赖于数据库中的默认值(db是mysql)。
我在某处读到你可以在hbm.xml文件中提供默认值,但是hibernate没有识别它。这是JobQueue.hbm.xml
中的相应部分 <property name="priority" type="integer">
<column name="priority" default="0" />
</property>
我想另一种选择是修改生成的JobQueue.java文件(我使用eclipse hibernate工具自动生成hibernate类)但是现在我想尝试获取hbm.xml配置上班。
我正在使用hibernate库的4.1.3版和eclipse hibernate工具3.4.0.x。
答案 0 :(得分:3)
default="0"
仅与生成数据库架构的SchemaExport相关。除了那个hibernate完全忽略了这个设置。您可以尝试为列设置not-null="true"
。
答案 1 :(得分:3)
除非您无法重新创建整个数据库架构,否则可以在变量初始化中设置默认值。 在模型中,在初始化中将优先级设置为0.
在你班上:
private Integer priority = 0;
答案 2 :(得分:0)
我最终修改了JobQueue.java POJO来设置默认值。为了确保hibernate工具的代码生成不会覆盖此更改,我进行了设置,以便代码生成在temp文件夹中生成文件,然后将必要的文件复制到永久源位置。