Java Spring数据mongodb控制器不工作
你好,我是新来的 我在模型中创建了两个文档 我使用Dbref表示关系 但当我添加数据时,我在文档中看不到它 就像我的一个文档中的收藏列表一样 病人文件中的咨询清单 我的模型使用Spring数据mongodb Patient.javaJava 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
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"
}