保存日期时,Hibernate @Audited失败

时间:2017-04-11 21:29:32

标签: hibernate spring-boot hibernate-envers audit-tables

我有一个包含两个日期的实体,fromDate和toDate,如果我不审核它,它可以正常工作,但是,如果我添加@Audited注释,我会收到以下错误:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '1' for column 'from_date_mod' at row 1

我的实体就像这样:

@Entity
@Audited
public class MyEntity {

    @Id
    @GeneratedValue
    private BigInteger id;

    @NotNull
    private Date fromDate;

    private Date toDate;
    ....
}

我的liquibase脚本就是这个:

databaseChangeLog:
  - changeSet:
      id: 1
      author: Manuel 
      changes:
        - createTable:
            tableName: my_table
            columns:
              - column:
                  name: id
                  type: BIGINT
                  autoIncrement: true
                  constraints:
                    primaryKey: true
                    nullable: false
              - column:
                  name: from_date
                  type: datetime
                  constraints:
                    nullable: false
              - column:
                  name: to_date
                  type: datetime
  - changeSet:
      id: 2
      author: Manuel
      comment: Create Hibernate Envers audit table for my_table
      changes:
        - createTable:
            tableName: my_table_aud
            columns:
              - column:
                  name: id
                  type: BIGINT
                  autoIncrement: true
                  constraints:
                    primaryKey: true
                    nullable: false
              - column:
                  name: rev
                  type: BIGINT
                  constraints:
                    nullable: false
                    primaryKey: true
                    foreignKeyName: my_table_aud_revinfo_fk
                    referencedTableName: revinfo
                    referencedColumnNames: rev
              - column:
                  name: revtype
                  type: TINYINT
                  defaultValue: null
              - column:
                  name: from_date
                  type: datetime
                  defaultValue: null
              - column:
                  name: from_date_mod
                  type: datetime
                  defaultValue: null
              - column:
                  name: to_date
                  type: datetime
                  defaultValue: null
              - column:
                  name: to_date_mod
                  type: datetime
                  defaultValue: null

所以,这是与@Audited相关的东西,因为如果我删除它的注释就可以了。

你知道我为什么会收到这个错误吗?如果可能的话,我宁愿不更改MyEntity类字段的java类型。

1 个答案:

答案 0 :(得分:1)

您收到错误的原因是您的Liquidbase脚本不正确。

修改后的标志字段支持期望..._mod字段为布尔类型,其存储表示truefalse的指示符。这取决于方言选择布尔值的类型,可能是tinyintbit等。

一旦你改变了,我希望这种行为应该有效。