@XmlIDREF和@ManyToMany用于实体编组/解组

时间:2013-11-17 17:57:35

标签: java web-services rest marshalling unmarshalling

问题

我遇到了一个很大的问题,即将XML实体编组和解组实体用于REST Web服务。我正在使用标准javax.xml并且对象最终被编组好了。但是当从webservice获取项目时,出现问题并且所有集合都丢失了。

让我告诉你一个夸张的实体。

示例实体

@XmlRootElement(name = "file")
@XmlAccessorType(XmlAccessType.FIELD)
@Entity
@Table(name = "files")
public class FileModel extends BaseEntity {

    @XmlID
    @Id
    @Column(name = "ID")
    private String id;

    @Column(name = "description")
    private String description;

    @XmlIDREF
    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "file_user", joinColumns = { @JoinColumn(name = "id_file", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "username", nullable = false, updatable = false) })
    private Collection<UserModel> users;

// Constructors

public FileModel() throws NoSuchAlgorithmException {
    super();
    this.users = new ArrayList<UserModel>();
// for the purpose of new objects while marshalling
}

编组的webservice回答示例

<file>
   <id>1</id>
   <description>example</description>
   <users>rod</users>
</file>

示例xml发送到webservice,应该是demarshalled

<file>
   <id>1</id>
   <description>example</description>
   <users>rod</users>
   <users>anyone</users>
</file>

所以我希望用户的集合可以填充额外的用户。但是当我调试服务时,传入对象的集合完全是空的。因此,它会导致从数据库中删除所有用户。 为什么? :(

当然,任何人都存在于数据库中(假设)所以它实际上不是ORM的问题,而是对象解组。我做错了什么?

谢谢!

0 个答案:

没有答案