【问题标题】:Hibernate envers exceptionHibernate 遇到异常
【发布时间】: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


【解决方案1】:

它看起来像一个版本控制兼容性错误,

我将 hibernate-entitymanager 从 4.1.8.Final 升级到 4.2.0.Final,现在一切正常

【讨论】:

    猜你喜欢
    • 2021-12-19
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2014-05-06
    • 2021-04-09
    • 2012-06-26
    • 2013-03-22
    相关资源
    最近更新 更多