从glassfish 4迁移到wildfly 8.1后,AttributeConverter失败

Mat*_*ias 3 hibernate jpa glassfish wildfly-8

我有一个实体:

import java.io.Serializable;
import javax.persistence.*;
import java.util.List;

@Entity
@Table(name="user")
@NamedQuery(name="User.findAll", query="SELECT u FROM User u")
public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(unique=true, nullable=false)
    private int id;

    @Column(nullable=false)
    private boolean aktiv;
...
}
Run Code Online (Sandbox Code Playgroud)

和转换器:

import javax.persistence.AttributeConverter;
import javax.persistence.Converter;

@Converter(autoApply = true)
public class BooleanConverter implements AttributeConverter<Boolean, Byte> {

    @Override
    public Byte convertToDatabaseColumn(Boolean value) {
        if (value) {
            return 1;
        } else {
            return 0;
        }
    }

    @Override
    public Boolean convertToEntityAttribute(Byte value) {
        return 1 == value.byteValue();
    }

}
Run Code Online (Sandbox Code Playgroud)

这适用于glassfish 4.0.

但是在wildfly 8.1上,相同的代码产生:

javax.persistence.PersistenceException: org.hibernate.HibernateException: Unknown wrap conversion requested: [B to java.lang.Byte
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763)
Run Code Online (Sandbox Code Playgroud)

(如果我删除"aktiv"列,它就可以工作.)

知道问题是什么吗?

Mat*_*ias 5

如果Byte被Integer替换,则工作.默认情况下,MySql的'tinyint'用byte映射.AttributeConverter也可以作为AttributeConverter<Boolean, Integer>