Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据mongodb控制器不工作_Java_Spring_Mongodb_Spring Mvc - Fatal编程技术网

Java Spring数据mongodb控制器不工作

Java Spring数据mongodb控制器不工作,java,spring,mongodb,spring-mvc,Java,Spring,Mongodb,Spring Mvc,你好,我是新来的 我在模型中创建了两个文档 我使用Dbref表示关系 但当我添加数据时,我在文档中看不到它 就像我的一个文档中的收藏列表一样 病人文件中的咨询清单 我的模型使用Spring数据mongodb Patient.java import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; import org.springfram

你好,我是新来的 我在模型中创建了两个文档 我使用Dbref表示关系 但当我添加数据时,我在文档中看不到它 就像我的一个文档中的收藏列表一样

病人文件中的咨询清单

我的模型使用Spring数据mongodb

Patient.java


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.DBRef;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

@Document(collection = "patients")
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Patient {
    @Id
    private String id;
    private String nom;
    private String prenom;

    @DBRef
    private Collection<Consultation> consultations=new ArrayList<>();

}
存储库

PatientRepository.java和ConsultationRepository.java

package com.example.repositories;

import com.example.models.Patient;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;

import java.util.List;

public interface PatientRepository extends MongoRepository<Patient, String> {
    @Query(value="{'Consultation.id': ?0}",fields="{'consultations ': 0}")
    Patient findPatientBYConsultationId(String idc);

    @Override
    void delete(Patient deleted);
}


package com.example.repositories;

import com.example.models.Consultation;
import org.springframework.data.mongodb.repository.MongoRepository;

import javax.jws.Oneway;

public interface ConsultationRepository extends MongoRepository<Consultation, String> {
    @Override
    void delete (Consultation deleted);
}

package com.example.repositories;

import com.example.models.Patient;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;

import java.util.List;

public interface PatientRepository extends MongoRepository<Patient, String> {
    @Query(value="{'Consultation.id': ?0}",fields="{'consultations ': 0}")
    Patient findPatientBYConsultationId(String idc);

    @Override
    void delete(Patient deleted);
}


package com.example.repositories;

import com.example.models.Consultation;
import org.springframework.data.mongodb.repository.MongoRepository;

import javax.jws.Oneway;

public interface ConsultationRepository extends MongoRepository<Consultation, String> {
    @Override
    void delete (Consultation deleted);
}


package com.example.controllers;

import com.example.models.Consultation;
import com.example.models.Patient;
import com.example.repositories.ConsultationRepository;
import com.example.repositories.PatientRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


import java.util.*;


@RestController
public class PatientController {

    @Autowired
    PatientRepository patientRepository;

    @Autowired
    ConsultationRepository consultationRepository;



    @RequestMapping(method=RequestMethod.GET, value="/patients")
    public Iterable<Patient> patient() {
        return patientRepository.findAll();
    }

    @RequestMapping(method=RequestMethod.POST, value="/patients")
    public Patient save(@RequestBody Patient patient) {
        Collection<Consultation> consultations =  Optional.ofNullable(patient.getConsultations()).orElse(Collections.emptyList());
        consultations.forEach(consultation -> consultationRepository.save(consultation));
        patientRepository.save(patient);

        return patient;
    }

    @RequestMapping(method=RequestMethod.GET, value="/patients/{id}")
    public Optional<Patient> show(@PathVariable String id) {
        return patientRepository.findById(id);
    }

    @RequestMapping(method=RequestMethod.GET, value="/patients/{id}/{idc}")
    public Patient GetByConId(@PathVariable String idc){
        return patientRepository.findPatientBYConsultationId(idc);
    }


    @RequestMapping(method=RequestMethod.PUT, value="/patients/{id}")
    public Patient update(@PathVariable String id, @RequestBody Patient patient) {
        Optional<Patient> optionalPatient = patientRepository.findById(id);
        Patient p = optionalPatient.get();
        if(patient.getNom() != null)
            p.setNom(patient.getNom());

        if(patient.getPrenom() != null)
            p.setPrenom(patient.getPrenom());

        Collection<Consultation> consultations =  Optional.ofNullable(patient.getConsultations()).orElse(Collections.emptyList());
        consultations.forEach(consultation -> consultationRepository.save(consultation));
        patientRepository.save(p);
        return p;
    }

    @RequestMapping(method=RequestMethod.DELETE, value="/patients/{id}")
    public String delete(@PathVariable String id) {
        Optional<Patient> optionalPatient = patientRepository.findById(id);
        Patient patient = optionalPatient.get();
        patientRepository.delete(patient);

        return "";
    }


}


{
    "_id": "P1",
    "nom": "tata",
    "prenom": "toto",
    "consultations": [],
    "_class": "com.example.models.Patient"
}


{
    "_id": "C1",
    "titre": "kklk",
    "patient": {
        "$ref": "patients",
        "$id": "P1"
    },
    "_class": "com.example.models.Consultation"
}