JPA QueryDSL:count()导致ORA-01722:无效的数字

时间:2015-02-03 09:44:17

标签: oracle jpa querydsl

我有以下查询,它试图查找所有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=?

1 个答案:

答案 0 :(得分:1)

解决方法是我忘了将@Enumerated(EnumType.STRING)添加到我的Enum属性中。

MyEntity{
@Enumerated(EnumType.STRING)
private TrackingStatus trackingStatus;
}

这导致Enum-Position而不是Enum-String beeing插入数据库列      一旦我添加了注释,数据库中仍然运行的跟踪与它们的Enum-Position从查询中比较Enum-String - > ORA-01722:无效的号码。
解决方案是删除/迁移几个错误的映射跟踪。