Имея DAO в моем API, например:
@Id
private String idhousing;
private String owner;
private String name;
private String city;
private String type;
private int price;
private String description_detailed;
private String description_short;
private byte[] photo;
private int guests;
@JsonFormat(pattern="yyyy-MM-dd")
private LocalDate init_date;
@JsonFormat(pattern="yyyy-MM-dd")
private LocalDate end_date;
private String address;
И имея точно такой же DAO в моем клиентском приложении, я попытался создать новое жилье:
HousingObject house = new HousingObject(id_housing,owner,name,city,type,precio,
detailed_description,short_description,bytes,guests,localinitDate,localendDate,address);
ClientConfig config = new ClientConfig();
Client client = ClientBuilder.newClient();
WebTarget webResource = client.target("http://localhost:10505").path("housings");
Invocation.Builder invocationBuilder = webResource.request(MediaType.APPLICATION_JSON);
Response respuesta = invocationBuilder.post(Entity.entity(house, MediaType.APPLICATION_JSON));
Теперь япопросить получить все корпуса, и мой API:
@RequestMapping(value = "/housings", method = RequestMethod.GET)
public @ResponseBody List<HousingObject> getAllHousingsbyEmail(@RequestParam("email") String email){
for (HousingObject h : daoHsg.findByowner(email)) {
System.out.println("Printing data...");
System.out.println("The id_housing is " + h.getId_housing());
System.out.println("init date is " + h.getInit_date());
System.out.println("end date is " + h.getEnd_date());
System.out.println("max guests are " + h.getGuests());
System.out.println("the address is " + h.getAddress());
System.out.println("-------------------------------------------");
}
Я вызываю 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();
HousingObject[] listHousings = respuesta.readEntity(HousingObject[].class);
for(HousingObject m : listHousings) {
housingResult.add(m);
System.out.println("-------------------------------------");
System.out.println("printing data...");
System.out.println("id_housing is " + m.getId_housing());
System.out.println("init date is " + m.getInit_date());
System.out.println("end date is " + m.getEnd_date());
System.out.println("-------------------------------------");
}
В основномесли я печатаю Список из моего API:
Printing data...
The id_housing is 22ec2cc3-ae8e-4436-8fed-397c225b38e2
init date is 2018-06-23
end date is 2019-07-03
max guests are 5
the address is Collarte
-------------------------------------------
Но если я печатаю некоторые атрибуты каждого объекта в Списке, из моего клиента, используя readEntity, если у Списка есть только 1 объект:
[2018-12-12T16:42:11.762+0100] [glassfish 5.0] [INFO] [] [] [tid:
_ThreadID=29 _ThreadName=Thread-8] [timeMillis: 1544629331762] [levelValue:
800] [[guests are 0]]
[2018-12-12T16:42:11.762+0100] [glassfish 5.0] [INFO] [] [] [tid: _
ThreadID=29 _ThreadName=Thread-8] [timeMillis: 1544629331762] [levelValue:
800] [[price es 3]]
[2018-12-12T16:42:11.762+0100] [glassfish 5.0] [INFO] [] [] [tid: _
ThreadID=29 _ThreadName=Thread-8] [timeMillis: 1544629331762] [levelValue:
800] [[type is es 3]]
[2018-12-12T16:42:11.762+0100] [glassfish 5.0] [INFO] [] [] [tid:
_ThreadID=29 _ThreadName=Thread-8] [timeMillis: 1544629331762] [levelValue:
800] [[owner is Carrillo@gmail.com]]
[2018-12-12T16:42:11.762+0100] [glassfish 5.0] [INFO] [] [] [tid:
_ThreadID=29 _ThreadName=Thread-8] [timeMillis: 1544629331762] [levelValue:
800] [[detailed_description is Good luck my friend]]
[2018-12-12T16:42:11.762+0100] [glassfish 5.0] [INFO] [] [] [tid:
_ThreadID=29 _ThreadName=Thread-8] [timeMillis: 1544629331762] [levelValue:
800] [[city is Madrid]]
[2018-12-12T16:42:11.762+0100] [glassfish 5.0] [INFO] [] [] [tid:
_ThreadID=29 _ThreadName=Thread-8] [timeMillis: 1544629331762] [levelValue:
800] [[short_description is wefwefw]]
[2018-12-12T16:42:11.762+0100] [glassfish 5.0] [INFO] [] [] [tid:
_ThreadID=29 _ThreadName=Thread-8] [timeMillis: 1544629331762] [levelValue:
800] [[address is null]]
[2018-12-12T16:42:11.762+0100] [glassfish 5.0] [INFO] [] [] [tid: _
ThreadID=29 _ThreadName=Thread-8] [timeMillis: 1544629331762] [levelValue:
800] [[the id_housing is null]]
[2018-12-12T16:42:11.762+0100] [glassfish 5.0] [INFO] [] [] [tid:
_ThreadID=29 _ThreadName=Thread-8] [timeMillis: 1544629331762]
[levelValue:800] [[init date is null]]
[2018-12-12T16:42:11.762+0100] [glassfish 5.0] [INFO] [] [] [tid:
_ThreadID=29 _ThreadName=Thread-8] [timeMillis: 1544629331762] [levelValue:
800] [[end date is null]]
Так что я не знаю, что происходит.Если я запускаю микросервис с Почтальоном, список печатается без проблем со всеми ожидаемыми значениями.Если я распечатываю список из моей консоли API, я получаю ожидаемые значения из моей БД.Но по какой-то причине, когда список отправляется моему клиенту, многие атрибуты становятся нулевыми, а атрибуты guest по какой-то причине всегда меняют свое правильное значение на 0 (wtf).
Но забавно то, что если в моем Списке более одного корпуса, я даже не могу выполнить readEntityt, потому что выдается исключение:
Error deserializing object from entity stream. Caused by:
javax.json.bind.JsonbException: unresolved type for deserialization:
class java.lang.String
Есть какие-нибудь подсказки?