JPA错误:无法将状态字段路径“***”解析为有效类型

JPA错误:无法将状态字段路径“***”解析为有效类型,jpa,spring-data,jpql,Jpa,Spring Data,Jpql,这里的状态是从一个枚举中获取的,我有一个用于此的转换器类。但在运行时,它给出了以下异常,即在转换器类com.orsbv.hcs.model.ScheduleStatus$TypeConverter上调用convertToDatabaseColumn时,值为1.e 关于这个问题的任何帮助都将非常有用。请寻求专家的关注 这是错误日志: After running the following query method.... @Query(value = "select s.owner, "

这里的状态是从一个枚举中获取的,我有一个用于此的转换器类。但在运行时,它给出了以下异常,即在转换器类com.orsbv.hcs.model.ScheduleStatus$TypeConverter上调用convertToDatabaseColumn时,值为1.e

关于这个问题的任何帮助都将非常有用。请寻求专家的关注

这是错误日志:

After running the following query method....   


@Query(value = "select s.owner, " +
            "count(case when s.status = 3 then 1 else null end) as agreed," +
            "count(case when s.status = 2 then 1 else null end) as rejected," +
            "count(case when s.status = 1 then 1 else null end) as pending " +
            "from Schedule s where (s.owner = ?1) " +
            "group by s.owner")
你也应该这样做

更改s.status=3这应该是枚举 示例s.status=status.ACTIVE

更改s.Status应为整数=3
示例:s.status.id=3

通过使用完全限定的包名,可以解决此问题

ReportQuery(referenceClass=Schedule jpql="select s.owner, count(case when s.status = 1 then 1 else null end) as agreed,count(case when s.status = 2 then 1 else null end) as rejected,count(case when s.status = 3 then 1 else null end) as pending from Schedule s where (s.owner = ?1) group by s.owner")
        at org.eclipse.persistence.exceptions.QueryException.prepareFailed(QueryException.java:1596)
        at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:685)
        at org.eclipse.persistence.queries.ObjectLevelReadQuery.checkPrepare(ObjectLevelReadQuery.java:911)
        at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:615)
        at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:194)
        at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:116)
        at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:102)
        at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:86)
        at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1614)
        at sun.reflect.GeneratedMethodAccessor86.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:344)
        at com.sun.proxy.$Proxy75.createQuery(Unknown Source)
        at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:86)
        ... 48 more
Caused by: javax.persistence.PersistenceException: An exception occurred while calling convertToDatabaseColumn on converter class com.orsbv.hcs.model.schedule.ScheduleStatus$TypeConverter with value 1

你的问题是?标题和问题内容之间的关系在哪里?什么操作触发了异常?你是怎么解决的?问题中没有QueryDSL,所以标题fixed@JensSchauder请现在看一看。希望您现在就可以得到它。请添加您的转换器类和枚举。@Queryvalue=select s.owner,+countcase当s.status=com.orsbv.hcs.model.ScheduleStatus.AGREED时,则1否则按约定结束null,+countcase当s.status=com.orsbv.hcs.model.ScheduleStatus.REJECTED时,则1 else null结束为REJECTED,+countcase当s.status=com.orsbv.hcs.model.ScheduleStatus.PENDING时,则1 else null结束为来自计划s的PENDING+,其中s.owner=?1+由s.owner分组。通过使用完全限定的包名,解决了此问题。
@Query(value = "select s.owner, " + "count(case when s.status = com.orsbv.hcs.model.schedule.ScheduleStatus.AGREED then 1 else null end) as agreed," + "count(case when s.status = com.orsbv.hcs.model.schedule.ScheduleStatus.REJECTED then 1 else null end) as rejected," + "count(case when s.status = com.orsbv.hcs.model.schedule.ScheduleStatus.PENDING then 1 else null end) as pending " + "from Schedule s where (s.owner = ?1) " + "group by s.owner")