InvalidDataAccessApiUsageException: 没有枚举常量

InvalidDataAccessApiUsageException: No enum constant

我有一个 Role 枚举,如下所示:

public enum Role{
    admin('a'),
    member('m'),
    pending('p');
    char role;
    Role(char a) {
        this.role = a;
    }
    public char getRole() {
        return role;
    }
    public static Role getByRole(char role) {
        return Arrays.stream(Role.values())
                .filter(Role -> Role.getRole() == role)
                .findFirst()
                .orElse(Role.pending);
    }
}

为了支持转换,我创建了一个名为 RoleConverter 的 class:

@Converter
public class RoleConverter implements AttributeConverter<Role, Character> {
    @Override
    public Character convertToDatabaseColumn(Role Role) {
        return Role.getRole();
    }
    @Override
    public Role convertToEntityAttribute(Character dbData) {
        System.out.println(dbData);
        return Role.getByRole(dbData);
    }
}

并且在我的 Target 对象中添加了适当的注释:

    @Convert(converter = RoleConverter.class)
    @Enumerated(EnumType.STRING)
    public Role role;

它仍然给我错误 - 嵌套异常是 org.springframework.dao.InvalidDataAccessApiUsageException: 没有枚举常量 com.mua.cse616.model.Role.2;

将 spring 用于 h2 和 jpa

您的数据库包含一个角色为 2 的条目。

确保数据库中的条目与枚举中的条目具有相同的值。

似乎您的数据库中有一行,其列中的值 2 显然不存在于枚举中。也许您一开始没有使用 @Enumerated 注释,因此 JPA 使用序号作为列值。