0

我正在使用 CUBA-FRAMEWORK 中的服务进行一些数据操作并收到以下错误:

ClassCastException: java.util.Date cannot be cast to com.company.gms.entity.ProductionPlanResource

错误源于以下代码行:

matReqDate = DateUtils.addDays((Date)planQuery.getFirstResult().getStartDate(), daysOffset);
                                            }

周围的附加代码:

    Date reqShipDate = soline.getRequiredShipDate();
                                                Date matReqDate;
                                                TypedQuery<ProductionPlanResource> planQuery = persistence.getEntityManager()
                                                        .createQuery("select MIN(e.startDate) from mydb$ProductionPlanResource e " +
                                                                " where e.productionPlan.salesOrder.id = ?1 AND e.article.id = ?2", ProductionPlanResource.class);
                                                        planQuery.setParameter(1, soline.getSalesOrder().getId()).setParameter(2, article.getId());

                                                if (planQuery.getResultList().size() > 0) {

                                                    matReqDate = DateUtils.addDays((Date)planQuery.getFirstResult().getStartDate(), daysOffset);
                                                }

我试过这个,但没有帮助

java.sql.Date startDate = (java.sql.Date)planQuery.getFirstResult().getStartDate();

感谢您的帮助。

4

3 回答 3

1

TypedQuery应该返回 aProductionPlanResource但查看查询本身,它返回MIN(e.startDate)的似乎是 date 而不是 a ProductionPlanResource

于 2016-08-30T07:58:39.270 回答
1

异常告诉您有一个 Date 被转换为 ProductionPlanResource。那就是问题所在。

TypedQuery<ProductionPlanResource> planQuery =  ...
...select MIN(e.startDate) from ...

结果是一个日期,TypedQuery 是针对 ProductionPlanResource 类型的。

尝试更改为:

TypedQuery<Date> planQuery
于 2016-08-30T07:59:55.200 回答
0

您可以尝试 .getTime() 然后进行转换,因为 java 和 sql 日期都读取 long 值。

于 2016-08-30T07:48:34.883 回答