Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Hibernate“映射数据类型”;字节";枚举属性转换器不工作-错误:没有JDBC类型的方言映射:277630005_Spring_Spring Boot_Spring Data Jpa - Fatal编程技术网

Spring Hibernate“映射数据类型”;字节";枚举属性转换器不工作-错误:没有JDBC类型的方言映射:277630005

Spring Hibernate“映射数据类型”;字节";枚举属性转换器不工作-错误:没有JDBC类型的方言映射:277630005,spring,spring-boot,spring-data-jpa,Spring,Spring Boot,Spring Data Jpa,使用spring启动版本:2.2.6.RELEASE |数据库:SQLServer2008 | org.hibernate.dialent.SQLServer2008dialent 使用转换器映射java中引用“Byte”的“TINYINT”类型列的枚举时,出现以下错误: 当对初始数据库休眠ddl时,JDBC类型277630005没有方言映射 但是,当在不使用枚举的情况下作为字节进行直接映射时,它可以正常工作 转换器: @Converter public class CharacterClas

使用spring启动版本:2.2.6.RELEASE |数据库:SQLServer2008 | org.hibernate.dialent.SQLServer2008dialent


使用转换器映射java中引用“Byte”的“TINYINT”类型列的枚举时,出现以下错误:

当对初始数据库休眠ddl时,JDBC类型277630005没有方言映射

但是,当在不使用枚举的情况下作为字节进行直接映射时,它可以正常工作

转换器:

@Converter
public class CharacterClassConverter implements AttributeConverter<CharacterClassIndicator, Byte> {
    @Override
    public Byte convertToDatabaseColumn(CharacterClassIndicator characterClassIndicator) {
        return characterClassIndicator != null ? characterClassIndicator.getCode() : null;
    }

    @Override
    public CharacterClassIndicator convertToEntityAttribute(Byte code) {
        return Stream.of(CharacterClassIndicator.values())
                .filter(value -> value.getCode().equals(code))
                .findFirst()
                .orElseThrow(UnsupportedOperationException::new);
    }
}
实体代码:

@Entity
@Table(name = "Character")
public class Character {
    @Id
    @Column(name = "AccountID")
    private String id;

    @Column(name = "Name")
    private String name;

    @Column(name = "Class")
    @Convert(converter = CharacterClassConverter.class) // if remove this line and change type to Byte, works correctly
    private CharacterClassIndicator characterClass;

    @Column(name = "cLevel")
    private Integer level;

    @Column(name = "Strength")
    private Short strenght;

    @Column(name = "Dexterity")
    private Short dexterity;

    @Column(name = "Vitality")
    private Short vitality;

    @Column(name = "Energy")
    private Short energy;

    @Column(name = "Resets")
    private Integer resets;

    .... gets and setters
}

有人知道如何解决吗?

使用
columnDefinition

@Column(name = "Class", columnDefinition = "TINYINT") 

数据库中的
TINYINT
的大小是多少?这是TINYINT(4)谢谢Eklavya,它是这样工作的。
@Column(name = "Class", columnDefinition = "TINYINT")