我遇到了一个很大的问题,即将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
}
<file>
<id>1</id>
<description>example</description>
<users>rod</users>
</file>
<file>
<id>1</id>
<description>example</description>
<users>rod</users>
<users>anyone</users>
</file>
所以我希望用户的集合可以填充额外的用户。但是当我调试服务时,传入对象的集合完全是空的。因此,它会导致从数据库中删除所有用户。 为什么? :(
当然,任何人都存在于数据库中(假设)所以它实际上不是ORM的问题,而是对象解组。我做错了什么?
谢谢!