Разберись с Джо с Джо - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь преобразовать объект в формат json, но он не работает (я получаю странное исключение переполнения стека).Он отлично работает от объекта к XML.У меня есть простой класс сущности User и другой класс с отношением manyToMany.

@Entity
@XmlRootElement
public class User extends Person {

    @Column(length = 60)
    private String email;

    @Column(name = "PSEUDO", length = 50)
    protected String pseudo;

    @ManyToMany(fetch = FetchType.LAZY ,targetEntity = Group.class)
    @OrderBy("group_name ASC")
    protected List<ItGroup> groups = new LinkedList<ItGroup>();

    ...

    getters

}

связанный класс

@Entity
@Table(name = "groups")
public class Group implements ItGroup, Serializable {

...
    @XmlTransient
    @ManyToMany(fetch = FetchType.LAZY,mappedBy = "groups",targetEntity = User.class)
    @OrderBy("email ASC")
    private List<ItUser> users = new LinkedList<ItUser>();
...

}

Я поместил аннотации @XmlTransient на геттеры, которые хочу игнорировать.

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

    @GET
    @Path("{nickname}")
    @Produces({"application/json"})
   // @Produces({"application/xml"})
    public ItUser getUserFromPseudo(@PathParam("nickname") String pseudo){

        ItUser user = this.daoUser.getUserFromPseudo(pseudo);

        return user;
    }

Так что он работает с @Produces ({"application / xml"}), а не с @Produces ({"application / json"})

Я использую Glassfish 5, и таким образом модули включены в родительское POM моего приложения, разделенного на разные модули.Дело в том, что я даже не знаю, какую реализацию джерси я использую ... Я читал, что moxy был лучшим, и он мог читать аннотации jaxb.

  <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>8.0</version>
    <scope>provided</scope>
  </dependency>

Как я могу это исправитьпроблема?

1 Ответ

0 голосов
/ 22 мая 2018

Возможно, ваше "странное исключение переполнения стека" вызвано бесконечной рекурсией с Джексоном, как в этом посте.Так что @JsonIgnore, @JsonManagedReference или @JsonBackReference может быть вариантом для вас.

...