【发布时间】:2013-05-06 13:18:56
【问题描述】:
我正在尝试在我的项目中使用 JBoss envers (4.2.0.FINAL) 注释,但由于枚举审计问题而失败,
我的实体代码是
@Entity
@Audited
@DiscriminatorValue("CREDIT")
@EqualsAndHashCode(callSuper = true)
@Data
public class CreditTransactionEntity extends TransactionEntity {
@Column(name = "consumed")
protected int consumed;
@Column(name = "approval_status", columnDefinition = "ENUM('APPROVED', 'DISAPPROVED', 'PENDING') DEFAULT 'PENDING'")
@Enumerated(EnumType.STRING)
private ApprovalStatus status;
public enum ApprovalStatus {
APPROVED, DISAPPROVED, PENDING
}
}
但是当我更新/插入记录时,会出现以下异常
Hibernate 数据访问的 JDBC 异常:SQL 的 SQLException [n/a]; SQL状态[S1000];错误代码[0];由于 java.lang.NumberFormatException,无法将类 java.lang.String 转换为请求的 SQL 类型 - 对于输入字符串:“APPROVED”;嵌套异常是 org.hibernate.exception.GenericJDBCException:由于 java.lang.NumberFormatException,无法将类 java.lang.String 转换为请求的 SQL 类型 - 对于输入字符串:“APPROVED”
为什么要将枚举转换为整数?!
注意:我使用的是休眠 4.1.8.Final
【问题讨论】:
-
我假设您的数据库和 Hibernate 之间存在冲突。您使用的是哪个数据库模型/版本?你可以改用
EnumType.Oridnal。 -
我有 mySQL 5.5,我猜我没有冲突,因为我检查了所有 Enums 表
-
在没有@Audited 的情况下您是否也会遇到此异常?
-
不,如果没有环境,我并不是每个都可以正常工作
标签: java spring hibernate jpa hibernate-envers