具有多个枚举的枚举类的未知名称值[]

时间:2019-02-16 14:40:51

标签: java hibernate jpa enums spring-data-jpa

道课:

for

RepositoryClass:

    for (int index = 0; index < str.length(); index++) {
        if (Character.isLetter(str.charAt(index))) {
            letterCount++;
        }
    }

如果我正在调用findBySection(Section.A),它会按预期工作。
但是,如果我致电findByGender(Gender.MALE),则会引发错误:

@Entity @Table( name = "test" ) public class Test { @ManyToOne @JoinColumn( name = "college_id", referencedColumnName = "id" ) private College college; @Enumerated( EnumType.STRING ) @Column( name = "gender", length = 500 ) private Gender gender; @Enumerated( EnumType.STRING ) @Column( name = "section", length = 500 ) private Section section; ... } public enum Gender { Male, Female; } public enum Section { A(0), B(1), C(2); }

奇怪的部分是,如果我打电话给我,findByCollegeAndGenderNot(College clg,Gender sex)起作用了。

1 个答案:

答案 0 :(得分:1)

我假设您在数据库的列部分中具有空值。

要映射到Java枚举的数据库列可能不能为空。

所以您应该检查一下并添加默认值。

此外,您还应将列注释更改为:

@Enumerated( EnumType.STRING )
@Column( name = "gender", length = 500, nullable = false )
private Gender gender;

@Enumerated( EnumType.STRING )
@Column( name = "section", length = 500, nullable = false )
private Section section;