首页 > 解决方案 > 使用带有 MyBatis 插件的 Griffon、Groovy 和 JavaFX,一项服务无法工作,而其他所有服务都可以——我做错了什么?

问题描述

MyBatis 接口定义如下:

@TypeProviderFor(MybatisMapper)
interface DBMapper extends MybatisMapper {
    List<ReferenceItem> listReferences(String type)
    int addReferenceItem(ReferenceItem newItem)
    int saveReferenceItem(ReferenceItem item)
    int badOrders(int id)
    ReferenceItem getReferenceItem(int id, String type)
    List getBadOrders(int carId)
    List<ReportingMark> listReportingMarks()
    int addReportingMark(ReportingMark mark)
    List<ViewCar> listCarsForViewing()
    int addRRCar(RRCar)
    RRCar getRRCar(int id)
    int updateCar(RRCar)
    int addInspection(Inspection inspection)
    int addBadOrder(BadOrder badOrder)
}

有问题的控制器具有以下代码段:

  if (name.equals("MaintenanceWindow")) {
        List<ReferenceItem> areas = dbService.getReferenceList("CAR_AREA")
        areas.each {
            view.carArea.items.add(new ObsReference(id: it.id, typeVal: it.typeName))
        }
        view.carArea.getSelectionModel().select(0)
        model.selectedCarArea.bind(view.carArea.getSelectionModel().selectedIndexProperty())
        model.datePerformed.set(LocalDate.now())
        dbService.getBadOrders(model.carId)

        model.currentTime.set(LocalTime.now().format(DateTimeFormatter.ofPattern("kk:mm")))
        List<BOViewModel> badOrderedCars = dbService.getBadOrders(carId)
        log.debug("the list of bad ordered cars is {}", badOrderedCars)
        runInsideUI( {
            view.badOrderedCars.getItems().remove(0, view.badOrderedCars.getItems().size())
            log.debug("adding a bad ordered car {}", it)
            badOrderedCars.each {view.badOrderedCars.items.add(it)}
        })
    }

第一个 dbService 引用 ( dbService.getReferenceList("CAR_AREA")) 运行良好,第二个 (dbService.getBadOrders(carId)) 响应为 ") 原因:groovy.lang.MissingMethodException:没有方法签名:com.spw.rr .DBService.badOrderResults() 适用于参数类型:(java.lang.Integer) 值:[3]" 对于我的生活,我看不出第一个定义和第二个定义之间的区别。有人有想法吗?

标签: javafxgroovymybatisgriffon

解决方案


我需要记住顺序——在服务中定义方法,在接口和 XML 中定义服务调用的内容。我跳过了一步,没有记住它。

第一个片段中的代码是接口定义。我没有发布服务中的代码(dbService 参考)——这就是需要定义方法的地方。


推荐阅读