Java POST、DELTE、GET操作RestController带复合键的弹簧引导

Java POST、DELTE、GET操作RestController带复合键的弹簧引导,java,spring,rest,Java,Spring,Rest,我正在寻找使用JPA在控制器类中实现此操作(删除、发布、获取)的正确方法 下面是我的代码,我不确定post是否正确,但确实是delete导致了问题,因为Apache组件中的HttpDelete并没有请求主体的setEntity方法 道: @Repository public interface PiecesReparationDAO extends JpaRepository<PiecesReparation, Integer>{ PiecesReparation findB

我正在寻找使用JPA在控制器类中实现此操作(删除、发布、获取)的正确方法

下面是我的代码,我不确定post是否正确,但确实是delete导致了问题,因为Apache组件中的HttpDelete并没有请求主体的setEntity方法

道:

@Repository
public interface PiecesReparationDAO extends JpaRepository<PiecesReparation, Integer>{
    PiecesReparation findById(PieceRId id);
    PiecesReparation findById_Id_produit(int id);
    PiecesReparation findById_Id_Reparation(int id);
    void deleteById(PieceRId id);
}
分段分类:

    @Embeddable
   public class PieceRId implements Serializable {
   int id_produit;
   int id_reparation;

   //implements equals and hashCode
   public int getIdProduit(){
       return this.id_produit;
   }

   public int getIdReparation(){
       return this.id_reparation;
   }

   public PieceRId(){

   }

   public PieceRId(int id_produit, int id_reparation){
       this.id_produit=id_produit;
       this.id_reparation=id_reparation;
   }

   @Override
   public boolean equals(Object o){
       if(o ==null) return false;
       if(((PieceRId)o).getIdProduit() == this.getIdProduit() &&
               ((PieceRId)o).getIdReparation() == this.getIdReparation())
           return true;
       else return false;
   }

   @Override
   public int hashCode() { 
       return Integer.valueOf(String.valueOf(id_produit)+String.valueOf(id_reparation));
   }
}
控制员:

@RestController
public class PiecesReparationController {
   @Autowired
    private PiecesReparationDAO piecesReparationDao;

    @GetMapping(value = "/Pieces")
    public ArrayList<PiecesReparation> listePiecesReparations() {
        ArrayList<PiecesReparation> listePiecesReparations= new ArrayList() ;
        Iterable<PiecesReparation> piecesReparations = piecesReparationDao.findAll();
         MappingJacksonValue produitsFiltres = new MappingJacksonValue(piecesReparations);
         for (Iterator<PiecesReparation> i = piecesReparations.iterator(); i.hasNext();) {
            PiecesReparation item = i.next();
               listePiecesReparations.add(item);
         }
         return listePiecesReparations;
    }

    //Récupérer un produit par son Id
    @GetMapping(value = "/Pieces/{id}")
    public PiecesReparation selectionPiecesReparation(@PathVariable PieceRId id) {
        return piecesReparationDao.findById(id);
    }

    //ajouter un produit
    @PostMapping(value = "/Pieces")
    public ResponseEntity<?> ajouterPiecesReparation(@RequestBody PieceReparationDTO pieceReparation) {

        PiecesReparation pieceR = new PiecesReparation();
        pieceR.setPieceRId(new PieceRId(pieceReparation.getIdProduit(), pieceReparation.getIdReparation()));
        pieceR.setDateUtilisation(pieceReparation.getDateUtilisation());
        PiecesReparation piecesReparationAdded =  piecesReparationDao.save(pieceR);

        if (piecesReparationAdded == null)
            return new ResponseEntity<>(HttpStatus.UNPROCESSABLE_ENTITY);
        else return new ResponseEntity<>(HttpStatus.CREATED);

    }

   @DeleteMapping(value = "/Pieces/{id}")
   public void supprimerPiecesReparation(@PathVariable PieceRId id) {

       piecesReparationDao.delete(id);
   }

   @DeleteMapping(value = "/Pieces")
   public void supprimerPiecesReparation2(@RequestBody PieceRId id) {
       PiecesReparation pieceR= new PiecesReparation();
       pieceR.setPieceRId(new PieceRId(id.getIdProduit(),id.getIdReparation()));
       piecesReparationDao.delete(pieceR);
   }




  @PutMapping (value = "/Pieces")
  public void updateProduit(@RequestBody PieceReparationDTO pieceReparation) {
       PiecesReparation pieceR = new PiecesReparation();
        pieceR.setPieceRId(new PieceRId(pieceReparation.getIdProduit(), pieceReparation.getIdReparation()));
        pieceR.setDateUtilisation(pieceReparation.getDateUtilisation());
        PiecesReparation piecesReparationAdded =  piecesReparationDao.save(pieceR);
  } 
}

我知道如何使用url和path变量删除,但不知道如何使用请求体,因为没有setEntity方法。我不确定其他操作是否正确执行。谢谢。

如果您的ID类型是
PieceRId
,为什么要将存储库ID类型定义为
Integer
?请忘记它,谢谢。我做了更改,我必须通过以下方式更改findById:可选findById(PieceRId Id);不知道什么是可选的,因为与findBydId(ID)冲突CRUD RepositoryID足以删除。为什么你需要身体?如果您需要此方法,请使用post方法。我们如何将path变量与对象PieceRId一起使用?我们使用PieceRId new HttpDelete的JSonString表示(getUrl(type)+“/”+JSONSTRINGPICEID)?
@RestController
public class PiecesReparationController {
   @Autowired
    private PiecesReparationDAO piecesReparationDao;

    @GetMapping(value = "/Pieces")
    public ArrayList<PiecesReparation> listePiecesReparations() {
        ArrayList<PiecesReparation> listePiecesReparations= new ArrayList() ;
        Iterable<PiecesReparation> piecesReparations = piecesReparationDao.findAll();
         MappingJacksonValue produitsFiltres = new MappingJacksonValue(piecesReparations);
         for (Iterator<PiecesReparation> i = piecesReparations.iterator(); i.hasNext();) {
            PiecesReparation item = i.next();
               listePiecesReparations.add(item);
         }
         return listePiecesReparations;
    }

    //Récupérer un produit par son Id
    @GetMapping(value = "/Pieces/{id}")
    public PiecesReparation selectionPiecesReparation(@PathVariable PieceRId id) {
        return piecesReparationDao.findById(id);
    }

    //ajouter un produit
    @PostMapping(value = "/Pieces")
    public ResponseEntity<?> ajouterPiecesReparation(@RequestBody PieceReparationDTO pieceReparation) {

        PiecesReparation pieceR = new PiecesReparation();
        pieceR.setPieceRId(new PieceRId(pieceReparation.getIdProduit(), pieceReparation.getIdReparation()));
        pieceR.setDateUtilisation(pieceReparation.getDateUtilisation());
        PiecesReparation piecesReparationAdded =  piecesReparationDao.save(pieceR);

        if (piecesReparationAdded == null)
            return new ResponseEntity<>(HttpStatus.UNPROCESSABLE_ENTITY);
        else return new ResponseEntity<>(HttpStatus.CREATED);

    }

   @DeleteMapping(value = "/Pieces/{id}")
   public void supprimerPiecesReparation(@PathVariable PieceRId id) {

       piecesReparationDao.delete(id);
   }

   @DeleteMapping(value = "/Pieces")
   public void supprimerPiecesReparation2(@RequestBody PieceRId id) {
       PiecesReparation pieceR= new PiecesReparation();
       pieceR.setPieceRId(new PieceRId(id.getIdProduit(),id.getIdReparation()));
       piecesReparationDao.delete(pieceR);
   }




  @PutMapping (value = "/Pieces")
  public void updateProduit(@RequestBody PieceReparationDTO pieceReparation) {
       PiecesReparation pieceR = new PiecesReparation();
        pieceR.setPieceRId(new PieceRId(pieceReparation.getIdProduit(), pieceReparation.getIdReparation()));
        pieceR.setDateUtilisation(pieceReparation.getDateUtilisation());
        PiecesReparation piecesReparationAdded =  piecesReparationDao.save(pieceR);
  } 
}
public static void deleteRest(int id, String type){

        try{
        CloseableHttpClient client = HttpClientBuilder.create().build();  

            HttpDelete deleteRequest = new HttpDelete(getUrl(type)+"/"+id);
            HttpResponse response=client.execute(deleteRequest);
            System.out.print("response code : 
 "+response.getStatusLine().getStatusCode());
            client.close();
        }catch (ClientProtocolException e) {

        e.printStackTrace();

    } catch (IOException e) {

        e.printStackTrace();
    } 



    }