我不确定我的语法是否正确。
我的控制器
@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。
答案 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);