2012-01-09 53 views
1

嗨,我使用web服务时遇到问题 我有一个包含许多角色的对象用户。jaxb @ManyToMany @XmlID @XmlIDREF无法将Refed对象转换为xml

当我从我的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; 
    } 
} 
+0

我相信你无法和解组XML开始用''根元素开始。你应该从中删除'@ XmlRootElement'。请发布导致问题和完整异常堆栈的XML。 – 2012-01-09 16:55:20

回答