我有以下查询,它试图查找所有RUNNING Trackings的计数:
new JPAQuery(getEntityManager()).from(myTracking)
.where(myTracking.trackingStatus.isNotNull(),
myTracking.trackingStatus.eq(TrackingStatus.RUNNING))
.count()
这导致ORA-01722:无效的数字。为什么呢?
编辑:记录SQL语句:
/* select
count(myTracking)
from
MyTracking myTracking
where
myTracking.trackingStatus is not null
and myTracking.trackingStatus = ?1 */ select
count(mytrackin0_.ID) as col_0_0_
from
owner.T_my_TRACKING mytrackin0_
where
(
mytrackin0_.STATUS is not null
)
and mytrackin0_.STATUS=?
答案 0 :(得分:1)
解决方法是我忘了将@Enumerated(EnumType.STRING)添加到我的Enum属性中。
MyEntity{
@Enumerated(EnumType.STRING)
private TrackingStatus trackingStatus;
}
这导致Enum-Position而不是Enum-String beeing插入数据库列
一旦我添加了注释,数据库中仍然运行的跟踪与它们的Enum-Position从查询中比较Enum-String - > ORA-01722:无效的号码。
解决方案是删除/迁移几个错误的映射跟踪。