编程语言
首页 > 编程语言> > java – jax-b xml具有多对多关系的反向引用

java – 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<User> friends;

/**
 * @return
 * 
 *         gets the list of users this user is friends with
 */
public List<User> getFriends() {
    return this.friends;
}

/**
 * @param friendsList
 * 
 *            sets the users friends list
 */
public void setFriends(List<User> 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之前​​停止.
>在解组期间,它将填充后退指针.

标签:java,xml,jpa,jaxb,java-ee-6
来源: https://codeday.me/bug/20190709/1409509.html