java - 如何使用 liquibase 在列数据库上将默认值设置为 0?

标签 java mysql hibernate liquibase

我正在使用 liquibase。我有一个用户表,其中一列定义如下:

<column name="referralClicks" type="int"/>

当我第一次在数据库中保存我的用户时。 referralClicks 为空。但我想设置一个默认值 (0),我尝试了以下配置:

 <addDefaultValue 
            columnDataType="int"
            columnName="referralClicks"
            defaultValueNumeric="0"
            tableName="USER"/>
   </changeSet>

我使用 MySQL 数据库。在结构中,我可以看到默认值设置为 0。 enter image description here

但是当我有数据时,referralClicks 为空: enter image description here

在代码中,如果未设置,我也会检索空值。

Integer referralClicks = user.getReferralClicks();

我错过了什么?

最佳答案

您可以 <update> 您使用这样的现有数据:

<update tableName="USER">
    <column name="referralClicks" valueNumeric="0"/>
    <where>referralClicks IS NULL</where>
</update>

或如原始 <sql> 所述:

<sql>
    UPDATE USER SET referralClicks = 0 WHERE referralClicks IS NULL
</sql>

关于java - 如何使用 liquibase 在列数据库上将默认值设置为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30510796/

相关文章:

java - @Query 标签中的嵌套 SQL 无法正常工作

java - 将字符串数组转换为int数组android

php - 从重复 ID 具有相同父键的表创建多维数组

mysql - Solr DIH 错误 : Unable to read: dataimport. 属性

php - 如何根据先前插入的 id 添加到表 - mysqli_insert_id 存在问题

hibernate - 具有该名称 [userName] 的参数不存在

java - 将逗号分隔的字符串添加到 ArrayList,反之亦然

java - Intellij Idea中方法注释模板的编辑方法

Java SSL 问题 - 无法解析的 CRLDistributionPoints 扩展

java - Hibernate JPA ManyToOne 组合键