powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
14 сообщений из 14, страница 1 из 1
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38924568
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
@XmlRootElement
public class Egg implements Serializable {
    private String text;

    public Egg(String text) {
        this.text = text
    }

    геттеры сеттеры
}


@XmlRootElement
public class Neste implements Serializable {
    private Egg egg;

    public Neste(Egg egg) {
        this.egg = egg;
    }

    геттеры сеттеры
}



делаю POST из клиента

Код: java
1.
2.
3.
4.
5.
6.
7.
        Client client = ClientBuilder.newClient();
        WebTarget webTarget = client.target(url);
        Builder invocationBuilder  = webTarget.request(mediaType);

        Neste neste = new Neste(new Egg("привет"));

        Response response = invocationBuilder.post(Entity.entity(neste, mediaType)); // Вот тут обьект egg в neste есть



получаю в сервере
Код: java
1.
2.
3.
4.
5.
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    public String create(Neste entity) {
        return entity.toString(); // вот тут entity не нулл, а entity,getEgg() - нулл
    }



куда подевался вложеный POJO по дороге?
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38924728
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321,

посмотреть бы геттеры. Зачем аннотация @XmlRootElement, если используется JSON? Никаких других аннотаций на геттерах нет? Ошибок точно никаких нет?
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38924808
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
danatriel,

проблема была в @JsonManagedReference и @JsonBackReference аннотациях на полях.
одной поле было списком другого.
ну и что-бы джсон парсер не циклился.
блин капец.
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38924829
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321,

если не сильно ложные сущности и связи между ними - советую использовать @JsonIgnore
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38924841
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
danatrielЮрий321,

если не сильно ложные сущности и связи между ними - советую использовать @JsonIgnore

оно же просто игнорирует поле в сущности при добавлении в дерево джейсон?

не, мне надо как раз список чилдов показать.

задача вобщем - у папы есть несколько детей, у детя есть один папа.

создаю через пост нового папу, список детей при создании пуст, они создаются позже.

создаю через пост нового дитя, указываю ему существующего папу.

забираю через гет папу, джейсон циклится на связи папа-дитя.

ставлю аннотации референс и бэк, при отправке нового дитя теряется папа
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38924865
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class Parent {
    private Collection<Child> childs;
    
    @OneToMany(mappedBy = "parent")
    public Collection<Child> getChilds(){
        return this.childs;
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class Child {
    
    private Parent parent;
    
    @JsonIgnore
    @ManyToOne(optional = false)
    public Parent getParent(){
        return this.parent;
    }
}
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38924866
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вобщем, вот так делают

http://wiki.fasterxml.com/JacksonFeatureObjectIdentity
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38924869
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Юрий321]danatrielЮрий321,
создаю через пост нового дитя, указываю ему существующего папу.


не забудь дитя добавить в коллекцию родителю
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38924881
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot danatriel]Юрий321пропущено...


не забудь дитя добавить в коллекцию родителю

с этим я уже отдельно потрахался :) достаю родителя из дитя в посте, добавляю дитя в коллекцию и делаю мёрдж, с этой стороны все нормально работает.
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38924890
danatriel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321,

как-то у вас все сложно :)
у меня в проекте работает так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Parent parent=new Parent();
Child child=new Child();
child.setParent(parent);
parent.getChilds().add(child);
ClientConfig clientConfig = new DefaultClientConfig();

clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);

Client client = Client.create(clientConfig);

WebResource webResource = client.resource("http://localhost:8080/test");

ClientResponse response = webResource.accept("application/json")
            .type("application/json").post(ClientResponse.class, parent);



и на сервер приходит Parent с Child'ом
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38924975
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
danatriel,

Семен Семеееныч! нахрена я вообще сервис для детей то писал, когда можно их в папу добавлять-удалять и папу апдейтить!

капец :) весь сервис к двум урлам сведется, папы и справочники.
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38925546
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий321danatriel,

Семен Семеееныч! нахрена я вообще сервис для детей то писал, когда можно их в папу добавлять-удалять и папу апдейтить!

капец :) весь сервис к двум урлам сведется, папы и справочники.
папа может!
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38963524
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возвращаясь к баранам,

не могу понять ключевую вещь.

есть jpa сущности с двусторонними отношениями.

есть сериализация и десериализация их в джейсон.

с двусторонними связями принципиально ничего не получится?

если разрывать рекурсию, то получается односторонняя связь хозяин - подчиненный.

и тут,
во первых, если через рест делать апдейт подчиненного, то игнорируемое поле, ссылка на хозяина, в jpa уйдет как нул, т.е. потерялась одна из связей в jpa.

во вторых, если апдейтить подчиненного через апдейт хозяина, то приходится гонять туда-сюда по рест неслабые портянки джейсон-текста, плюс непонятно как устроить разделение данных по ролям юзеров, какой-то роли например, вообще не надо знать про хозяина, надо апдейтнуть какие-то поля подчиненного, и все.

как правильно делают сервисы jpa <-> rest?
...
Рейтинг: 0 / 0
jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
    #38963531
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
либо при апдейте подчиненного через рест, после десериализации, перед merge
делать выборку по таблицам, с которыми у подчиненного есть связи, восстанавливать связи и только потом делать merge?
как-то велосипедно.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / jersey (jax-rs) клиент и сервер, JSON, POST и вложеные POJO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]