I am using eclipse-link, and I am retrieving data from table and trying to store the retrieved data into XML file using JAXB. While writing into XML file last record only saved in that file.
Here User is My POJO class have Two fields
@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()
{
}
}
Below is My code:
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();
}
}
}
Here i am getting 10 records.But while storing last Record only saved in XML
My Result :
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<user id="10">
<name>prabha</name>
</user>