Spring Hibernate“映射数据类型”;字节";枚举属性转换器不工作-错误:没有JDBC类型的方言映射:277630005
使用spring启动版本:2.2.6.RELEASE |数据库:SQLServer2008 | org.hibernate.dialent.SQLServer2008dialentSpring 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
使用转换器映射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")