jaxb @ManyToMany @XmlID @XmlIDREF无法将Refed对象转换为xml

时间:2012-01-09 08:36:27

标签: java web-services jaxb cxf

我使用网络服务时遇到问题 我有一个包含许多角色的对象用户。

当我从包含角色的web服务中获得一个用户(Id:3)并且该角色包含许多用户(id:3和id 2)时。我收到了一个错误

引起:javax.xml.bind.UnmarshalException:未定义的ID“2”。

我认为这是由于id为2的用户不在xml中。

我的问题是如何让这个用户填充到xml中?

@XmlRootElement()
public class User implements UserInterface {

    @Override
    @GeneratedValue
    @Id
    @XmlID
    @XmlJavaTypeAdapter(IntegerAdapter.class)
    public Integer getId() {
        return id;
    }

@Override
@ManyToMany(targetEntity=Role.class,fetch=FetchType.EAGER)
@XmlElement(type=Role.class)
public Set<RoleInterface> getRoles() {
    return roles;
}


}

@XmlRootElement()
public class Role implements RoleInterface {
    @ManyToMany(targetEntity=User.class,fetch=FetchType.EAGER)
    @XmlIDREF
    @XmlList
    public Set<UserInterface> getUsers() {
        return users;
    }
}

1 个答案:

答案 0 :(得分:0)

为了使用@XmlIDREF,还必须通过某种包含关系映射引用的对象,例如@XmlElement

了解更多信息