枚举类的未知序数值

时间:2015-12-31 11:13:21

标签: java hibernate enums

我正在尝试在我的应用程序中进行一些更改时出现以下错误。 你能帮我解决一下吗?试图在网上找到相同但没有任何帮助。

错误堆栈:

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

}

4 个答案:

答案 0 :(得分:4)

您正在尝试获取BeschikkingStatusType: 5,但这不存在,因为枚举只有5个值,并且从0开始计数。

答案 1 :(得分:1)

在重新分解期间,您似乎已从enum BeschikkingStatusType中删除了某个项目,但某些已保存的数据包含引用旧值的行。您需要手动删除或更改此数据才能解决此问题。

答案 2 :(得分:0)

代码似乎没问题,你有现有数据吗?

如果是,可能有一些值为5的数据,这就是您收到错误的原因。

答案 3 :(得分:0)

如果您有包含枚举的现有数据,则无法删除值或更改其顺序,您只能在最后添加新值。如果不再需要使用某个值,请在枚举中标记@Deprecated,但不要删除它。