Я построил веб-сервис отдыха, используя SPRING и Hibernate.
У меня есть 2 объекта: изображение и пользователь, связанные с аннотацией oneToOne.
Когда я пытаюсь вернуть данные пользователя и изображение, соответствующее этому пользователю, я получаю эту ошибку:
"org.springframework.web.HttpMediaTypeNotAcceptableException: не удалось найти приемлемое представление"
Когда я делаю это отдельно, он работает нормально, но когда я делаю это по одному маршруту, я получаю эту ошибку.
Вот мой контроллер:
@CrossOrigin(
origins = "*",
methods = {RequestMethod.POST, RequestMethod.GET, RequestMethod.OPTIONS, RequestMethod.DELETE},
allowedHeaders = "*")
@RestController
@RequestMapping(path = "/user")
public class UserController {
@Autowired
UserRepository userRepository;
@Autowired
ImageRepository imageRepsository;
doesn't work--> @RequestMapping(value="/{userId}/getUserAndImage",method=RequestMethod.GET,produces = MediaType.IMAGE_JPEG_VALUE )
public Optional<User> getUserAndImage(@PathVariable Long userId) {
return userRepository.findById(userId);
}
works fine--> @RequestMapping(value="/{userId}/image", method=RequestMethod.GET, produces = MediaType.IMAGE_PNG_VALUE)
public byte[] getUserImage(@PathVariable Long userId) {
byte[] image = (imageRepsository.findImageWithUserId(userId)).getImage();
return image;
}
Вот сущности:
Пользователь:
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@NotNull
@Size(max=100)
@Column
private String nom;
@NotNull
@Size(max=250)
@Column
private String prenom;
@OneToOne(fetch=FetchType.EAGER,
cascade = CascadeType.PERSIST)
private Image image;
//getters and setters
}
Изображение объекта:
@Entity
@Table(name="images")
public class Image {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name="image")
@Lob
private byte[] image;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name="user_id")
private User user;
//getters and setters
}