Я новичок в весенней загрузке. У меня есть почтовый запрос на создание объекта учителя, который в ответ я получаю:
{
"timestamp": "2020-03-26T14:00:27.498+0000",
"status": 415,
"error": "Unsupported Media Type",
"message": "Content type 'application/json;charset=UTF-8' not supported",
"path": "/api/v1/teachers"
}
Мой объект учителя выглядит следующим образом:
package ir.darsineh.lms.dal.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
@Data
@Entity
@Table(name = "teacher")
public class Teacher implements Serializable {
@Id
@Column(name = "id", updatable = false)
private Long id;
@JsonIgnore
@JsonManagedReference
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id", referencedColumnName = "id")
private User user;
}
, а вот мой объект пользователя:
package ir.darsineh.lms.dal.entity;
import com.fasterxml.jackson.annotation.JsonBackReference;
import lombok.Data;
import lombok.ToString;
import javax.persistence.*;
import javax.validation.constraints.Size;
import java.io.Serializable;
@Data
@Entity
@Table(name = "user")
public class User implements Serializable {
@Id
@Column(name = "id", updatable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "first_name")
@Size(max = 255)
private String firstName;
@Column(name = "last_name")
@Size(max = 255)
private String lastName;
@ToString.Exclude
@JsonBackReference
@OneToOne(mappedBy = "user", fetch = FetchType.LAZY)
private Teacher teacher;
@JsonBackReference
@OneToOne(mappedBy = "user", fetch = FetchType.LAZY)
private Student student;
}
и вот мой контроллер и сервис:
package ir.darsineh.lms.http;
import ir.darsineh.lms.dal.entity.Teacher;
import ir.darsineh.lms.service.TeacherService;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(path = TeacherController.BASE_URL)
public class TeacherController {
private TeacherService teacherService;
public static final String BASE_URL = "/api/v1/teachers";
public TeacherController(TeacherService teacherService) {
this.teacherService = teacherService;
}
@GetMapping
List<Teacher> getAllTeachers() {
return teacherService.findAllTeachers();
}
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.CREATED)
Teacher saveTeacher(@RequestBody Teacher teacher, @RequestHeader HttpHeaders headers) {
System.out.println(headers);
return teacherService.saveTeacher(teacher);
}
}
package ir.darsineh.lms.service;
import ir.darsineh.lms.dal.entity.Teacher;
import ir.darsineh.lms.dal.repository.TeacherRepository;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class TeacherService {
private TeacherRepository teacherRepository;
public TeacherService(TeacherRepository teacherRepository) {
this.teacherRepository = teacherRepository;
}
public List<Teacher> findAllTeachers() {
List<Teacher> teachers = teacherRepository.findAll();
System.out.println("fetched teachers are : " + teachers);
return teachers;
}
public Teacher saveTeacher(Teacher teacher) {
return teacherRepository.save(teacher);
}
}
пожалуйста, сообщите мне, если что-то не так с моей сущностью или контроллером или чем-то еще. спасибо.