我有一个包含两个日期的实体,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类型。
答案 0 :(得分:1)
您收到错误的原因是您的Liquidbase脚本不正确。
修改后的标志字段支持期望..._mod
字段为布尔类型,其存储表示true
或false
的指示符。这取决于方言选择布尔值的类型,可能是tinyint
或bit
等。
一旦你改变了,我希望这种行为应该有效。