【发布时间】:2014-03-12 04:14:50
【问题描述】:
我正在使用 eclipse-link,我正在从表中检索数据并尝试使用 JAXB 将检索到的数据存储到 XML 文件中。写入 XML 文件时,最后一条记录仅保存在该文件中。
这里用户是我的 POJO 类有两个字段
@XmlRootElement
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String name;
@XmlAttribute
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User()
{
}
}
下面是我的代码:
public class ObjectToXml {
private static int startingIndex = 0;
private static int maxIndex= 10;
public static void main(String[] args) {
EntityManager entityManager = EntityManagerUtil.getEmf()
.createEntityManager();
Query query = entityManager.createQuery("Select u from User u");
System.out.println("Total Number of Records"
+ query.getResultList().size());
try {
JAXBContext contextObj = JAXBContext.newInstance(User.class);
Marshaller marshallerObj = contextObj.createMarshaller();
marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
query.setFirstResult(startingIndex );
query.setMaxResults(maxIndex);
List<User> user = query.getResultList();
Iterator iterator = user.iterator();
while (iterator.hasNext()) {
User student = (User) iterator.next();
MarshallerObj.marshal(student, new FileOutputStream("User.xml"));
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
entityManager.close();
}
}
}
这里我得到 10 条记录。但是在存储最后一条记录时只保存在 XML 中
我的结果:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<user id="10">
<name>prabha</name>
</user>
【问题讨论】:
标签: java xml jpa jaxb eclipselink