缺少Netbeans restful Web服务中方法公共实体的依赖关系

时间:2011-12-20 09:25:35

标签: web-services rest netbeans jersey composite-key

我正在使用Netbeans EE6和jersey库以及教程http://netbeans.org/kb/docs/websvc/rest.html部署一个安静的Web服务。

当我从数据库中包含复合主键的实体创建一个restful Web服务时,当我尝试测试Web服务时,该项目给我一个错误:

  

SEVERE:缺少方法公共实体的依赖项.RMSchedule service.RMScheduleFacadeREST.find(entities.RMSchedulePK)at index at index 0     SEVERE:方法,公共实体.RMSchedule service.RMScheduleFacadeREST.find(entities.RMSchedulePK),使用资源GET,类service.RMScheduleFacadeREST注释,不被视为有效的资源方法。

错误是由于复合主键还是我应该包含一个步骤? 非常感谢提前。

1 个答案:

答案 0 :(得分:0)

我认为这个问题与Netbeans bug有关:

https://netbeans.org/bugzilla/show_bug.cgi?id=208375

创建具有复合主键的实体类时, 创建了两个实体文件。 (ex CustomerEntity.jave, CustomerEntityPK.java)

然后,如果您选择从实体类创建servlet,则servlet会自带生成的代码,如下所示:

    @DELETE
    @Path("{id}")
    public void remove(@PathParam("id") CustomerEntityPK id) { //error
        super.remove(super.find(id));
    }

    @GET
    @Path("{id}")
    @Produces({"application/xml", "application/json"})
    public CustomerEntity find(@PathParam("id") CustomerEntityPK id) { //error
        return super.find(id);
    }

问题是传递给servlet方法的参数是CustomerEntityPK,它具有复合主键。

如果你将参数类型更改为类似于String,那么在我的情况下错误就消失了。

    @DELETE
    @Path("{id}")
    public void remove(@PathParam("id") String id) { //type set to String now
        super.remove(super.find(id));
    }

但在我的项目中,我不需要这样的自动生成代码,因此我只是选择手动创建servlet类并且没有问题。

希望有所帮助。