I have created a spring boot with DTO, Entity and also generating entity from dto and vice versa but the data is not getting stored in the Postgres sql when i am trying to get the data its is showing null but creation is happing First is the controller class
import com.school.Entity.StudentDetails;
import com.school.Service.StudentService;
import com.school.dto.StudentDetailDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api")
@CrossOrigin("*")
public class SchoolController {
@Autowired
StudentService studentService;
@GetMapping("/test")
public String test(){
return "test";
}
@PostMapping("/uploadStudentData")
public StudentDetailDto createStudentDetails(@RequestBody StudentDetailDto dto){
return studentService.createStudentDetails(dto);
}
@GetMapping("/getAll")
public List<StudentDetails> getAllStudentData(){
return studentService.getAllStudentData();
}
}
Now the StudentDetailDto class
import java.util.List;
public class StudentDetailDto {
private Long id;
private String branch;
private List<StudentDto> student;
//getter and setter
}
now the StudenDto class
public class StudentDto {
private Long id;
private String firstName;
private String lastName;
private List<MarksListDto> marksList;
// getter and setter
}
now the marks list class
public class MarksListDto {
private Long id;
private String subjectName;
private Integer marks;
// getter and setter
}
now the SchoolDetails entity class
@Entity
public class StudentDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String branch;
@OneToMany(targetEntity=Students.class, mappedBy="id", fetch=FetchType.EAGER,cascade=CascadeType.ALL)
private List<Students> student;
//getter and setter
}
Now the Student Entity class
@Entity
public class Students {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String firstName;
private String lastName;
@OneToMany(targetEntity=MarksList.class, mappedBy="id", fetch=FetchType.EAGER,cascade=CascadeType.ALL)
private List<MarksList> marksList;
//getter and setter
}
Now the marks list entity
@Entity
public class MarksList {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String subjectName;
private int marks;
//getter and setter
}
Repository
public interface StudentRepository extends JpaRepository<StudentDetails, Long> {
}
Now the most important that i am thinking there is something wrong is the servers
import com.school.Entity.StudentDetails;
import com.school.Repository.StudentRepository;
import com.school.dto.StudentDetailDto;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class StudentService {
@Autowired
StudentRepository studentRepository;
@Autowired
ModelMapper modelMapper;
public StudentDetailDto createStudentDetails(StudentDetailDto dto) {
validateDto(dto);
StudentDetails studentDetails = generateEntityFromDto(dto);
studentDetails = studentRepository.save(studentDetails);
return generateDtoFromEntity(studentDetails);
}
private StudentDetails generateEntityFromDto(StudentDetailDto dto) {
StudentDetails studentDetails = modelMapper.map(dto, StudentDetails.class);
return studentDetails;
}
private StudentDetailDto generateDtoFromEntity(StudentDetails studentDetails){
StudentDetailDto dto = modelMapper.map(studentDetails,StudentDetailDto.class);
return dto;
}
private void validateDto(StudentDetailDto dto) {
}
// public List<StudentDetailDto> getAllStudentData() {
// List<StudentDetailDto> dto = new ArrayList<>();
// studentRepository.findAll().forEach(dto::add);
// return dto;
// }
// public String createStudentDetails(StudentDetails studentDetails){
// studentRepository.save(studentDetails);
// return "Student details created";
// }
//
public List<StudentDetails> getAllStudentData() {
return new ArrayList<>(studentRepository.findAll());
}
}
So when i am sending the data in postman it’s showing me this it is storing null value i don’t now y can anyone help me fix this and can help me to improve the code to the best version

Advertisement
Answer
Now it is working fine,I added following changes:
Define the ModelMapper bean in your Spring configuration:
@Bean
public ModelMapper modelMapper() {
return new ModelMapper();
}
dependency
<dependency> <groupId>org.modelmapper</groupId> <artifactId>modelmapper</artifactId> <version>2.3.5</version>
Apart from above changes rest of the things are just fine,but Please optimize your code further.
Tested using postman

