我的API出现问题,我已经制作了新的实体,DAO,服务和控制器。 POST(addEmployer)和GET(findEveryEmployer)工作没有问题。但是通过ID查找和按ID删除的内容并不起作用,我无法找到错误。我使用邮递员测试我的休息服务," api / praktykodawcy / 1" GET或DELETE显示NOT_FOUND(是的,至少有2名雇员在数据库中有正确的ID)
这是控制器的代码
@Controller
@RequestMapping(value = "/praktykodawcy")
public class PraktykodawcyController {
private iPraktykodawcyService ipraktykodawcyService;
@Autowired
PraktykodawcyController(iPraktykodawcyService ipraktykodawcyService) {
this.ipraktykodawcyService = ipraktykodawcyService;
}
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<PraktykodawcyEntity> addEmployeer (@RequestBody PraktykodawcyEntity praktykodawcyEntity) throws Exception {
try {
PraktykodawcyEntity newEmployeer = ipraktykodawcyService.addEmployeer(praktykodawcyEntity);
return new ResponseEntity<PraktykodawcyEntity>(newEmployeer, HttpStatus.CREATED);
}
catch (Exception e){
throw new Exception(e);
}
}
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<List<PraktykodawcyEntity>> findEveryEmployeer () {
List<PraktykodawcyEntity> list = ipraktykodawcyService.findEveryEmployeer();
return new ResponseEntity<List<PraktykodawcyEntity>>(list, HttpStatus.OK);
}
@RequestMapping(value = "/{idPraktykodawcy}", method = RequestMethod.GET)
public ResponseEntity<PraktykodawcyEntity> findByIdPraktykodawcy(@PathVariable int idPraktykodawcy) {
PraktykodawcyEntity praktykodawcyEntity = ipraktykodawcyService.findEmployeer(idPraktykodawcy);
if(praktykodawcyEntity !=null) {
return new ResponseEntity<PraktykodawcyEntity>(praktykodawcyEntity, HttpStatus.OK);
}
else {
return new ResponseEntity<PraktykodawcyEntity>(HttpStatus.NOT_FOUND);
}
}
@RequestMapping(value = "/{idPraktykodawcy}", method = RequestMethod.DELETE)
public ResponseEntity<PraktykodawcyEntity> deleteEmployeer(@PathVariable int idPraktykodawcy) {
PraktykodawcyEntity praktykodawcyEntity = ipraktykodawcyService.deleteEmployeer(idPraktykodawcy);
if(praktykodawcyEntity !=null) {
return new ResponseEntity<PraktykodawcyEntity>(praktykodawcyEntity, HttpStatus.OK);
}
else {
return new ResponseEntity<PraktykodawcyEntity>(HttpStatus.NOT_FOUND);
}
}
}
服务:
@Service
@Transactional
public class PraktykodawcyService implements iPraktykodawcyService {
@Autowired
private iPraktykodawcyDAO ipraktykodawcyDAO;
@Override
public PraktykodawcyEntity addEmployeer(PraktykodawcyEntity praktykodawcyEntity) {
return ipraktykodawcyDAO.addEmployeer(praktykodawcyEntity);
}
@Override
public PraktykodawcyEntity updateEmployeer(int idPraktykodawcy, PraktykodawcyEntity praktykodawcyEntity) {
return ipraktykodawcyDAO.updateEmployeer(idPraktykodawcy, praktykodawcyEntity);
}
@Override
public PraktykodawcyEntity deleteEmployeer(int idPraktykodawcy) {
return ipraktykodawcyDAO.deleteEmployeer(idPraktykodawcy);
}
@Override
public PraktykodawcyEntity findEmployeer(int idPraktykodawcy) {
return ipraktykodawcyDAO.findEmployeer(idPraktykodawcy);
}
@Override
public List<PraktykodawcyEntity> findEveryEmployeer() {
return ipraktykodawcyDAO.findEveryEmployeer();
}
@Override
public List<PraktykodawcyEntity> findByIdAdresu(int idAdresu) {
return ipraktykodawcyDAO.findByIdAdresu(idAdresu);
}
}
和DAO
@Repository
public class PraktykodawcyDAO implements iPraktykodawcyDAO {
@PersistenceContext
EntityManager em;
@Override
public PraktykodawcyEntity addEmployeer(PraktykodawcyEntity praktykodawcyEntity) {
em.persist(praktykodawcyEntity);
return praktykodawcyEntity;
}
@Override
public PraktykodawcyEntity updateEmployeer(int idPraktykodawcy, PraktykodawcyEntity praktykodawcyEntity) {
em.merge(praktykodawcyEntity);
return praktykodawcyEntity;
}
@Override
public PraktykodawcyEntity deleteEmployeer(int idPraktykodawcy) {
PraktykodawcyEntity praktykodawcyEntity = em.find(PraktykodawcyEntity.class, idPraktykodawcy);
if(praktykodawcyEntity !=null) {
em.remove(praktykodawcyEntity);
return praktykodawcyEntity;
}
else {
return null;
}
}
@Override
public PraktykodawcyEntity findEmployeer(int idPraktykodawcy) {
return em.find(PraktykodawcyEntity.class, idPraktykodawcy);
}
@Override
public List<PraktykodawcyEntity> findEveryEmployeer() {
Query query = em.createQuery("SELECT e FROM PraktykodawcyEntity e");
return query.getResultList();
}
@Override
public List<PraktykodawcyEntity> findByIdAdresu(int idAdresu) {
Query query = em.createQuery("SELECT e FROM PraktykodawcyEntity e WHERE e.adresyByIdAdresu.idAdresu=?1");
query.setParameter(1, idAdresu);
return query.getResultList();
}
}
答案 0 :(得分:0)
您需要将变量名称赋予@PathVariable
注释。
试试这个:
public ResponseEntity<PraktykodawcyEntity>
findByIdPraktykodawcy(@PathVariable("idPraktykodawcy") int idPraktykodawcy)
答案 1 :(得分:0)
好的伙计们,我发现了什么是错的,首先我在代码中编写了一对prinln来检查id是否正确通过所有模块,一切都是正确的。但后来我检查了实体,看到@OneToMany没有被评论,它正在搜索与另一个实体的这种关系,但该实体得到了@ManyToOne评论和休眠并没有大喊这样的事情。现在开始工作,现在让这个双向工作正常工作,感谢大家快速回答。