オブジェクトを 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>
どうすればその問題を解決できますか?