Я думаю, что эта проблема связана с ошибкой Netbeans:
https://netbeans.org/bugzilla/show_bug.cgi?id=208375
При создании класса сущностей, который имеет составные первичные ключи, создаются два файла сущностей.(ex CustomerEntity.jave, CustomerEntityPK.java)
Затем, если вы решите создать сервлет из класса сущностей, сервлет поставляется с автоматически сгенерированным кодом, например следующим:
@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);
}
Проблема заключается в том, что аргументМетоды сервлета передаются в CustomerEntityPK, который имеет составной первичный ключ.
Если вы измените тип аргумента на что-то вроде String, то ошибка исчезнет в моем случае.
@DELETE
@Path("{id}")
public void remove(@PathParam("id") String id) { //type set to String now
super.remove(super.find(id));
}
Но в моем проекте мне не понадобился такой автоматически сгенерированный код, поэтому я просто решил создать класс сервлета вручную и без проблем.
Надеюсь, это поможет.