试图在hibernate中指定property的默认值

时间:2012-05-25 15:32:42

标签: java hibernate

尝试在表中插入行时,我从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。

3 个答案:

答案 0 :(得分:3)

default="0"仅与生成数据库架构的SchemaExport相关。除了那个hibernate完全忽略了这个设置。您可以尝试为列设置not-null="true"

答案 1 :(得分:3)

除非您无法重新创建整个数据库架构,否则可以在变量初始化中设置默认值。 在模型中,在初始化中将优先级设置为0.

在你班上:

private Integer priority = 0;

答案 2 :(得分:0)

我最终修改了JobQueue.java POJO来设置默认值。为了确保hibernate工具的代码生成不会覆盖此更改,我进行了设置,以便代码生成在temp文件夹中生成文件,然后将必要的文件复制到永久源位置。