2013-05-06 108 views
0

我试图使用JBoss envers(4.2.0.FINAL)标注在我的项目,但我失败了由于枚举审计问题,休眠envers例外

我实体的代码是

@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异常:SQLException for SQL [n/a]; SQL状态[S1000];错误代码[0];由于java.lang.NumberFormatException,无法将类java.lang.String转换为请求的SQL类型 - 对于输入字符串:“APPROVED”;嵌套的例外是org.hibernate.exception.GenericJDBCException:不能java.lang.String类转换成要求源于java.lang.NumberFormatException SQL类型 - 对于输入字符串:“认可”

为什么它转换的枚举整数 ?!

注:我用冬眠4.1.8.Final

+0

你是否也没有@Audited这个异常? – adamw 2013-05-07 06:15:59

+0

不,我不是每个人都工作正常,没有envers – 2013-05-07 09:24:03

+0

我假设你的数据库和Hibernate之间有冲突。您正在使用哪种数据库模型/版本?你可以使用'EnumType.Oridnal'来代替。 – 2013-05-06 13:28:17

回答

0

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

我从4.1.8.Final升级我的Hibernate的EntityManager来4.2.0.Final和一切正常工作现在