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)扩展,使您可以映射双向关系:
- http://blog.bdoughan.com/2010/07/jpa-entities-to-xml-bidirectional.html
- http://blog.bdoughan.com/2013/03/moxys-xmlinversereference-is-now-truly.html
@XmlInverseReference
两个角色:
- 在编组期间,它可以防止发生无限循环。 如果
Foo
和Bar
之间存在双向关系,它将编组Foo
然后编组Bar
然后它将在尝试再次编组Foo
之前停止。 - 在解组期间,它将填充后指针。