1

オブジェクトを 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に含まれており、さまざまなモジュールに分割されています。実際のところ、私が使用している jersey の実装もわかりません... moxy が最高で、jaxb アノテーションを読み取ることができると読みました。

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

どうすればその問題を解決できますか?

4

1 に答える 1