保存日期时 Hibernate @Audited 失败

Hibernate @Audited fails when saving dates

我有一个包含两个日期的实体,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 class 字段的 java 类型。

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

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

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