hibernate + jersey2 + Json + изображение blob - PullRequest
0 голосов
/ 10 февраля 2019

Я хочу иметь возможность загружать файл вместе с 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...