保存日期时 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
字段为布尔类型,存储表示 true
或 false
的指标。这取决于为布尔值选择什么类型的方言,可能是 tinyint
或 bit
等
一旦你改变它,我希望行为应该有效。
我有一个包含两个日期的实体,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
字段为布尔类型,存储表示 true
或 false
的指标。这取决于为布尔值选择什么类型的方言,可能是 tinyint
或 bit
等
一旦你改变它,我希望行为应该有效。