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

标签 java hibernate jpa enums spring-data-jpa

道类:

@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/

相关文章:

java - Tomcat 6 启动时出错

java - Spring - JPA - 插入 - 不传递具有默认值的字段的值会引发错误

java - 我们如何使用 Java 解释一般规则?

java - Swing 动画不起作用

java - AWS Elastic Beanstalk 中的 JDBC 连接字符串

java - 中止插入...选择子句

java - JPA : Not able to persist record due to incorrect values being passed from client to server

java - Hibernate/JPA - 对象本身的外键索引

java - 如何配置 EclipseLink HistoryPolicy 以跟踪对 GlassFish 4 中 JPA 实体的元素集合属性的更改?

java - Activiti - 停止所有并行流的网关?