【发布时间】:2019-06-06 04:43:47
【问题描述】:
我已经使用 SPRING 和 Hibernate 构建了一个 REST Web 服务。 我有 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
}
【问题讨论】: