gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:15:23 25 4
gpt4 key购买 nike

道类:

@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);
}

存储库类:

List<Test> findByGender( Gender gender );
List<Test> findBySection( Section section );

如果我调用 findBySection(Section.A),它会按预期工作。
但是如果我调用 findByGender(Gender.MALE),它会抛出错误:

InvalidDataAccessAPIUsageException:枚举类 [com.java] 的未知名称值 []。 ...constants.Section]

奇怪的是,如果我打电话,findByCollegeAndGenderNot(College clg, Genderender) 它的工作原理。

最佳答案

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

要映射到 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;

关于java - 具有多个枚举的枚举类的未知名称值 [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54724204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com