我正在尝试在我的应用程序中进行一些更改时出现以下错误。 你能帮我解决一下吗?试图在网上找到相同但没有任何帮助。
错误堆栈:
org.springframework.dao.InvalidDataAccessApiUsageException: Unknown ordinal value for enum class entity.beschikking.BeschikkingStatus$BeschikkingStatusType: 5; nested exception is java.lang.IllegalArgumentException: Unknown ordinal value for enum class entity.beschikking.BeschikkingStatus$BeschikkingStatusType: 5] with root cause
java.lang.IllegalArgumentException: Unknown ordinal value for enum class entity.beschikking.BeschikkingStatus$BeschikkingStatusType: 5
at org.hibernate.type.EnumType.nullSafeGet(EnumType.java:112)
类:
@org.hibernate.annotations.Cache(usage =CacheConcurrencyStrategy.READ_ONLY)
@Entity
@Table(name = "beschikking_statussen", schema = "lgr")
public class BeschikkingStatus implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(unique = true, insertable = false, updatable = false, nullable = false)
@Enumerated(EnumType.STRING)
private BeschikkingStatusType id;
public BeschikkingStatusType getId() {
return id;
}
public void setId(BeschikkingStatusType id) {
this.id = id;
}
public enum BeschikkingStatusType {
ONBEKEND,
VOORLOPIG,
DEFINITIEF,
DEFINITIEF_CORRIGEREN,
GEARCHIVEERD;
}
}
答案 0 :(得分:4)
您正在尝试获取BeschikkingStatusType: 5
,但这不存在,因为枚举只有5个值,并且从0开始计数。
答案 1 :(得分:1)
在重新分解期间,您似乎已从enum BeschikkingStatusType
中删除了某个项目,但某些已保存的数据包含引用旧值的行。您需要手动删除或更改此数据才能解决此问题。
答案 2 :(得分:0)
代码似乎没问题,你有现有数据吗?
如果是,可能有一些值为5的数据,这就是您收到错误的原因。
答案 3 :(得分:0)
如果您有包含枚举的现有数据,则无法删除值或更改其顺序,您只能在最后添加新值。如果不再需要使用某个值,请在枚举中标记@Deprecated,但不要删除它。