2015-12-09 4 views
0

У меня есть ребенок отношение родителя построить этот путь (пришел из прежней системы)Джексон @JsonBackreference для встроенных или вложенных классов

@Entity 
@Table 
class A implements Serializable { 

    ........ 
    @jsonmanagedreference("test") 
    @OneToMany(mappedBy="PK.id", fetch = FetchType.LAZY,) 
    Set<B> b = new HashSet<B>() 

    ...... 
    setters/getters 

} 



@Embeddable 
class PK { 

    @jsonbackreference("tets") // can't find it 
    @ManyToOne 
    @JoinColumns 
    A a 

} 

@Entity 
@Table 
class B implements Serializable { 

    @EmbeddedId 
    private PK pk; 

    setters/getters 

} 

Он прекрасно работает с регулярными операциями, проблема в том, что я не могу сериализовать объект, потому что круговые Справка. После того как я попытался добавить @jsonmanagedreference в Ab и @jsonbackreference к PK.a это не сработало, потому что не мог найти JsonBackReference, есть способ управления потомок родителя во время сериализации, если ребенок в Встроенный класс или вложенный?

+0

вы можете поместить '' @JsonIgnore на 'public B getB()'. –

+0

Как это работает? он просто пропускает сериализацию, мне нужно полное восстановление объекта после десериализации – antohoho

ответ

0

Я использовал это решение: Read embedded object in Jackson

Он работал для меня, просто используя @JsonUnwrapped на вложенной ссылке класса и отображением встроенного идентификатора с: @JsonIdentityInfo

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "yourEmbeddedIdAtribute") 
Смежные вопросы