jax-b xml具有多对多关系的反向引用

我的数据模型中有很多关系。 我一直在尝试使用JAX = B来获取数据模型的XML表示,但是我已经读过一对多的关系:

@XmlInverseReference 

需要用于映射的反面。 我相信这是为了使用不同的提取类型(即LAZY和EAGER)。 我不确定这个注释是如何工作的。 它是否使用后向指针来确保在某些字段上指定数据时不会获取数据? 我也不知道是否需要用上述注释来注释我的多对多关系。

这是与自身有多对多关系的用户类,即。 用户可以是许多其他用户的朋友。 我应该用@XmlInverseReference注释getter吗?

 @Entity @Table(name = "users") public class User implements Serializable { ... // bi-directional many-to-many association to User @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) @JoinTable(name = "friends", joinColumns = { @JoinColumn(name = "uid") }, inverseJoinColumns = { @JoinColumn(name = "frienduId") }) private List friends; /** * @return * * gets the list of users this user is friends with */ public List getFriends() { return this.friends; } /** * @param friendsList * * sets the users friends list */ public void setFriends(List friendsList) { this.friends = friendsList; } 

非常感谢任何帮助或指导。

注意:我是EclipseLink JAXB(MOXy)的负责人,也是JAXB(JSR-222)专家组的成员。

@XmlInverseReference是一个EclipseLink JAXB(MOXy)扩展,使您可以映射双向关系:

@XmlInverseReference两个角色:

  • 在编组期间,它可以防止发生无限循环。 如果FooBar之间存在双向关系,它将编组Foo然后编组Bar然后它将在尝试再次编组Foo之前停止。
  • 在解组期间,它将填充后指针。