道课:
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)起作用了。
答案 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;