Я хочу иметь возможность загружать файл вместе с Json.Я использую hibernate и jersey2.
Я уже пытался отправить запрос.с почтальоном, но, кажется, ничего не работает.Я получаю сообщения об ошибках типа:
Невозможно создать экземпляр java.sql.Blob: абстрактные типы либо должны быть сопоставлены с конкретными типами, либо иметь собственный десериализатор, либо содержать дополнительную информацию о типе в [Source: org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream@908c4c5;строка: 9, столбец: 28] (через цепочку ссылок: entity.Car ["pictures"] -> java.util.ArrayList [0] -> entity.Picture ["image"])
Автомобильная сущность:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "car_id")
private int id;
@Column(name = "km")
private int km;
@Column(name = "modelyear")
private int modelyear;
@Column(name = "make")
private String make;
@Column(name = "model")
private String model;
@Column(name = "motorsize", columnDefinition = "DECIMAL(2,1)")
private float motorsize;
@Column(name = "motortype")
private String motortype;
@Column(name = "fueltype")
private String fueltype;
@Column(name = "price")
private int price;
@Transient
List<ResourceLink> links = new ArrayList<ResourceLink>();
@JsonProperty("pictures")
@OneToMany(fetch = FetchType.EAGER, mappedBy = "car", cascade = CascadeType.ALL)
List<Picture> pictures = new ArrayList<Picture>();
Сущность изображения:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "picture_id")
private int pictureId;
@Lob
@Column(name = "picture", columnDefinition = "mediumblob")
private Blob image;
@ManyToOne()
@JoinColumn(name = "car_id")
private Car car;
Имперский режим:
public void create(Car entity) {
Session session = SessionUtil.getSession();
Transaction transaction = session.beginTransaction();
session.save(entity);
transaction.commit();
session.close();
}
public Car findById(Integer id) {
Session session = SessionUtil.getSession();
Car car = session.get(Car.class, id);
session.close();
return car;
}
Автосервис:
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response createCar(Car car, @Context UriInfo uriInfo) {
carDAO.create(car);
BigInteger id = carDAO.findLatestId();
URI uri = uriInfo.getAbsolutePathBuilder().path(String.valueOf(id)).build();
return Response.created(uri).build();
}