У меня есть этот DAO:
@Entity
@Table(name="housing")
public class HousingObject implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String idhousing;
private String owner;
@Lob
private byte[] photo;
private int guests;
* more stuff here *
public HousingObject() {
}
* getters and setters *
Мой API выполняет поиск всех корпусов, принадлежащих конкретному пользователю, и сохраняет все эти объекты в списке:
@RequestMapping(value = "/housings", method = RequestMethod.GET)
public @ResponseBody ResponseEntity<?>
getAllHousingsbyEmail(@RequestParam("email") String email){
Optional<List<HousingObject>> lista = daoHsg.findByowner(email);
if (lista.isPresent()){
return new ResponseEntity<>(lista, HttpStatus.OK);
}
Тестирование с использованиемПочтальон возвращает список в формате JSON:
Проблема: Когда я пытаюсь вызвать API из моего клиента, у меня возникают проблемы с чтением ответа объекта:
ClientConfig config = new ClientConfig();
Client client = ClientBuilder.newClient();
WebTarget webResource = client.target("http://localhost:10505").path("housings").queryParam("email",mail);
Invocation.Builder invocationBuilder = webResource.request(MediaType.APPLICATION_JSON);
Response respuesta = invocationBuilder.get();
int status = respuesta.getStatus();
if (status != 200) {
request.setAttribute("listaAlojamientos", housingResult);
return "not_found.jsp";
}
HousingObject[] listHousings = respuesta.readEntity(HousingObject[].class);
В основном выдает исключение на readEntity
, а трассировка стека:
javax.ws.rs.ProcessingException:
Error deserializing object from entity stream.
Caused by: javax.json.bind.JsonbException: Internal error:
Event START_ARRAY not found. Last data: [EVENT: KEY_NAME KEY_NAME: guests]
Вопросы: почему json не работает на readEntity?Я думаю, что это, вероятно, из-за моего имиджа.Я храню свои изображения в BLOB-объектах, потому что они byte[]
.Почему почтальон получает список домов, а java json терпит неудачу?