首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@Enumerated(EnumType.STRING)导致没有为值[0]提供转换值

@Enumerated(EnumType.STRING)导致没有为值[0]提供转换值
EN

Stack Overflow用户
提问于 2013-12-04 20:14:43
回答 2查看 5.7K关注 0票数 2

我一直在使用它,但现在它不再起作用了。真的很奇怪。代码片段:

代码语言:javascript
复制
@Column(name = "STAT", length = 16)
@Enumerated(EnumType.STRING)
private State state = State.LIVE;

..。

代码语言:javascript
复制
public enum State {
    LIVE,
    DELETED;
}

在数据库中,只有与LIVE或DELETED一起存储的值。没有空值。

但我得到: Exception EclipseLink-116:org.eclipse.persistence.exceptions.DescriptorException Exception Description:没有为字段WERK.STAT中的值提供转换值。映射: org.eclipse.persistence.mappings.DirectToFieldMappingstate-->WERK.STAT

在我看来,序数('...provided for the value ...')以某种方式出现了,但我不知道为什么以及如何摆脱它。

我使用的是glassfish 3.1.2,它使用eclipselink 2.3.2。我升级到eclipselink 2.4.2也有同样的结果。这很奇怪,因为它在我的开发机器上运行没有任何问题。我使用的是mysql 5.6.14。

Thx

明白了。异常文本最终是错误的。我找到了这个值,但它在一个完全不同的表中(根本没有引用WERK ),并且是使用包含这些值的sql脚本导入的(我的错)。因此,如果你遇到类似的问题,你必须检查整个数据库内容,而不仅仅是上面提到的那些内容。

EN

回答 2

Stack Overflow用户

发布于 2018-01-18 16:31:23

如果枚举列与数据库中的列的值不匹配,则会出现此错误,例如:在数据库表status中定义列名为{status1,status2,status3,status4}的值表示java枚举,枚举状态{ status1,status2,status3}表示数据库中的status1,status2,status3匹配数据库中的值,但status4不匹配任何值(不存在),此时将出现此错误。

票数 0
EN

Stack Overflow用户

发布于 2019-04-02 17:50:48

在我的例子中,我用另一个应用程序修改了表,允许在所有字段中使用空值(当然,主键除外)。当我返回到我的第一个应用程序(它最初运行良好)时,我得到了这个异常。因此,我truncate (删除表中的所有行),应用程序现在运行得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20375112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档