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

问题描述 投票:0回答:2

我一直都在用这个,但现在它已经不再用了。真奇怪。代码段:

@Column(name = "STAT", length = 16)
@Enumerated(EnumType.STRING)
private State state = State.LIVE;

...

public enum State {
    LIVE,
    DELETED;
}

在db中,只有LIVE或DELETED存储的值。没有空值。

但我得到:Exception [EclipseLink-116](Eclipse Persistence Services - 2.4.2.v20130514-5956486):org.eclipse.persistence.exceptions.DescriptorException异常描述:没有为字段中的值[0]提供转换值[WERK.STAT]。映射:org.eclipse.persistence.mappings.DirectToFieldMapping [state - > WERK.STAT]

在我看来,序数('...提供的值[0] ...')以某种方式 - 到位,但我不知道为什么以及如何摆脱它。

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

谢谢

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

jpa eclipselink enumerated-types
2个回答
0
投票

如果枚举列没有填充数据库中列的值,则此错误传递,例如:您在数据库表状态中定义,列名为{status1,status2,status3,status4}表示java枚举,以及枚举状态{status1 ,status2,status3}在这种情况下,status1,status2和status3匹配数据库中的值,但status4与任何值都不匹配(不存在),在这种情况下将出现此错误。


0
投票

在我的例子中,我用另一个应用程序修改了表,允许在所有字段中使用空值(当然主键除外)。当我回到我的第一个应用程序(最初运行正常)时,我得到了这个例外。所以我截断(删除表中的所有行),应用程序现在运行正常。

© www.soinside.com 2019 - 2024. All rights reserved.