出现此异常的原因是在代码中将 Long 类型的数据转换为了 Integer 类型,导致类型转换错误。解决此问题的方法是将代码中的数据类型进行正确的转换。有两种解决方法:
例如,如果实体类中有一个字段为 age,它应该是 Integer 类型,而在保存实体时 age 的数值为 Long 类型,则需进行转型:
Long ageLong = 25L; Integer ageInt = ageLong.intValue(); entity.setAge(ageInt);
@Entity public class Student { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @Convert(converter = Integer2LongConverter.class) private Integer age; // 省略 getter 和 setter 方法 }
@Converter
public class Integer2LongConverter implements AttributeConverter
注:这里的 Integer2LongConverter 是自定义的类型转换器,其中 convertToDatabaseColumn 方法将 Integer 类型转换为 Long 类型,convertToEntityAttribute 方法将 Long 类型转换为 Integer 类型。
下一篇:保存视图控制器状态