删除Spring不起作用

时间:2015-05-12 18:04:54

标签: spring-mvc

我不确定我的语法是否正确。

我的控制器

@RequestMapping(value = "/bakedGoods/{id}", method = RequestMethod.DELETE, produces = "application/json")
    public @ResponseBody ResponseEntity<Object> deleteABakedGood(@PathVariable long id){
        bakedGoodsService.deleteABakedGoodInDB(id);

我的服务

public void deleteABakedGoodInDB(long id) {
        bakedGoodsDAO.deletBakedGood(id);

我的DAO

@Transactional
    public void deletBakedGood(long id) {
        em.remove(id);
        em.flush();

它表示long id未定义,但它在实体中定义为id。

1 个答案:

答案 0 :(得分:0)

行。所以

引发了异常
em.remove(id);

它说:

IllegalArgumentException: Unknown entity: java.lang.Long

EntityManager.remove()的javadoc说:

Remove the entity instance.
     

参数:          实体 - 实体实例

因此,remove()并不期望实体的ID。它期望一个实体实例。 BTW,只有一个ID作为参数,实体经理怎么知道它必须删除哪种类型的实体?

你需要像

这样的东西
 BakedGood entity = em.getReference(BakedGood.class, id);
 em.remove(entity);