Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / jparepository как получить вложенный json / 4 сообщений из 4, страница 1 из 1
25.12.2018, 04:55
    #39752578
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jparepository как получить вложенный json
всем доброго!
ребят подскажите как должен правильно это реализовать, вопрос конечно совсем уж нубский...

собственно есть скажем два энтити
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
@Entity
@Table(name = "jobs")
public class Jobs implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String title;

@JsonManagedReference
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
@OneToMany(fetch = FetchType.LAZY, mappedBy = "job", cascade = CascadeType.ALL)
private Set<Tags> tags = new HashSet<>(0);

//...



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@Entity
@Table(name = "tags")
public class Tags implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String name;

@JsonBackReference
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_job")
private Jobs job;


//...



как бы работает правильно если запрошу jobService.getAllJobs() получаю то что надо

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
[
{
    "id": 1,
    "title": "Title1",
    "tags": [
        {
            "id": 3,
            "name": "Grahphic design"
        },
        {
            "id": 4,
            "name": "Sketch"
        }
     ],
}, ....]



а вот если tagsService.getAllTags() то полуачю только тэги т.е.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
[
        {
            "id": 3,
            "name": "Grahphic design"
        },
        {
            "id": 4,
            "name": "Sketch"
        },
        {
            "id": 1,
            "name": "Photoshop"
        },
        {
            "id": 2,
            "name": "Web design"
        }
    ]



на это влияет аннотации @JsonManagedReference и @JsonManagedReference, но если их поменять получится обратное... так вот как отказаться от этих аннотации и можно было получить и при запросе данные из связанных таблиц?

З.Ы. но без этих аннотаций у меня вроде 1+N получается...
...
Рейтинг: 0 / 0
25.12.2018, 09:38
    #39752612
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jparepository как получить вложенный json
Музаффар, а что вы хотите получить в ответе на tagsService.getAllTags() ?
...
Рейтинг: 0 / 0
26.12.2018, 22:30
    #39753685
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jparepository как получить вложенный json
Озверин,
к примеру из тегов не могу достать джобы ну используя такой метод
Код: java
1.
tagsService.findAllTags().get(0).getJob()



получаю эксепшн такого рода
Код: plaintext
Type definition error: [simple type, class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: test.sudo.sudoyers.entity.Jobs$HibernateProxy$SDqzJVBr[\"hibernateLazyInitializer\"])"

это связан именно с выше указанными тегами...
...
Рейтинг: 0 / 0
26.12.2018, 22:46
    #39753690
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jparepository как получить вложенный json
МузаффарОзверин,
к примеру из тегов не могу достать джобы ну используя такой метод
Код: java
1.
tagsService.findAllTags().get(0).getJob()



получаю эксепшн такого рода
Код: plaintext
Type definition error: [simple type, class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: test.sudo.sudoyers.entity.Jobs$HibernateProxy$SDqzJVBr[\"hibernateLazyInitializer\"])"

это связан именно с выше указанными тегами...

вы можете вытащить код джобы, либо написать свой десериализатор для этих целей.
Если вас устроит код джобы, то используйте:

Код: java
1.
2.
3.
@JsonIdentityInfo(
  generator = ObjectIdGenerators.PropertyGenerator.class, 
  property = "id")
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / jparepository как получить вложенный json / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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