我已经使用SPRING和Hibernate构建了一个REST Web服务。 我有2个实体:图像和用户,并与oneToOne注释链接。
当我尝试返回用户详细信息以及与此用户对应的图像时,出现此错误: “ org.springframework.web.HttpMediaTypeNotAcceptableException:找不到可接受的表示形式”
当我单独进行操作时,它可以正常工作,但是当我在一条路线中进行操作时,会出现此错误。
var result = files.Where(i => codes.Any(y => i.Contains(y)).ToList();
用户实体:
@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
}
答案 0 :(得分:0)
在注释中,产生设置为MediaType.IMAGE_JPEG_VALUE,然后您的代码将响应作为用户对象返回。结果,它抛出该异常,因为spring希望您的代码仅返回JPEG类型的文件。
在这里我可以建议什么,使用 produces = MediaType.APPLICATION_JSON_VALUE ,然后将图像从byte []转换为base64字符串,然后以json对象的形式返回响应