0

尝试将行插入表时,我从休眠中收到以下错误消息:

org.hibernate.exception.ConstraintViolationException:列“优先级”不能为空

我知道我可以在代码中添加一行来设置值,但是在许多其他情况下程序依赖于数据库中的默认值(db 是 mysql)。

我在某处读到,您可以在 hbm.xml 文件中提供默认值,但 hibernate 无法识别它。这是 JobQueue.hbm.xml 中的相应部分

    <property name="priority" type="integer">
        <column name="priority" default="0" />
    </property> 

我想另一个选择是修改生成的 JobQueue.java 文件(我正在使用 eclipse hibernate 工具来自动生成休眠类)但是现在我想尝试让 hbm.xml 配置工作。

我正在使用 4.1.3 版的休眠库和 Eclipse 休眠工具 3.4.0.x。

4

3 回答 3

3

default="0"仅与生成数据库模式的 SchemaExport 相关。除了休眠完全忽略此设置。您可以尝试not-null="true"为该列设置。

于 2012-05-29T10:15:06.233 回答
3

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

在你的课堂上:

private Integer priority = 0;
于 2013-05-02T21:21:46.367 回答
0

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

于 2012-06-04T20:11:21.047 回答