我一直在使用它,但现在它不再起作用了。真的很奇怪。代码片段:
@Column(name = "STAT", length = 16)
@Enumerated(EnumType.STRING)
private State state = State.LIVE;..。
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脚本导入的(我的错)。因此,如果你遇到类似的问题,你必须检查整个数据库内容,而不仅仅是上面提到的那些内容。
发布于 2018-01-18 16:31:23
如果枚举列与数据库中的列的值不匹配,则会出现此错误,例如:在数据库表status中定义列名为{status1,status2,status3,status4}的值表示java枚举,枚举状态{ status1,status2,status3}表示数据库中的status1,status2,status3匹配数据库中的值,但status4不匹配任何值(不存在),此时将出现此错误。
发布于 2019-04-02 17:50:48
在我的例子中,我用另一个应用程序修改了表,允许在所有字段中使用空值(当然,主键除外)。当我返回到我的第一个应用程序(它最初运行良好)时,我得到了这个异常。因此,我truncate (删除表中的所有行),应用程序现在运行得很好。
https://stackoverflow.com/questions/20375112
复制相似问题