ClassCastException:java.util.Date无法强制转换为

时间:2016-08-30 07:44:06

标签: java cuba-platform

我在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();

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您的$paths = [ [ 'name' => 'file', 'ext' => 'txt', 'path' => '/folder/' ], [ 'name' => 'subFolder', 'ext' => 'folder', 'path' => '/folder/' ], [ 'name' => 'fileInSubFolder', 'ext' => 'txt', 'path' => '/folder/subFolder/' ] ]; if( $paths[$i]['ext'] == 'folder' ) { $zip->addEmptyDir($fileName); } else { // This would create "/folder/subFolder/fileInSubFolder.txt" $fullFileName= $paths[$i]['path'] . $paths[$i]['name'] . "." . $paths[$i]['ext']; $zip->addFromString( $fullFileName, /* File Data Here */); } 预计会返回TypedQuery,但查看查询本身,会返回ProductionPlanResource,这似乎是日期而不是MIN(e.startDate)。< / p>

答案 1 :(得分:1)

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

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

结果是Date,TypedQuery用于ProductionPlanResource类型。

尝试更改为:

TypedQuery<Date> planQuery

答案 2 :(得分:0)

你可以尝试.getTime()然后转换,因为java和sql都会读取long值。