Java JPA将对象写入二进制文件
数据库(用户)Java JPA将对象写入二进制文件,java,jpa,binaryfiles,Java,Jpa,Binaryfiles,数据库(用户) IDName 1Ali 2Abu 3Ahmad WriteBinaryFile.java EntityManagerFactory emf = Persistence.createEntityManagerFactory("UserPU"); EntityManager em = emf.createEntityManager(); Query query1 = em.createNativeQuery("select * from user",User.class); Lis
IDName
1Ali
2Abu
3Ahmad
EntityManagerFactory emf = Persistence.createEntityManagerFactory("UserPU");
EntityManager em = emf.createEntityManager();
Query query1 = em.createNativeQuery("select * from user",User.class);
List<User> list = query1.getResultList();
for(User userList: list){
FileOutputStream fos = new FileOutputStream("test.dat");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(userList);
oos.close();
}
FileInputStream fis = new FileInputStream("test.dat");
ObjectInputStream ois = new ObjectInputStream(fis);
User user1 = (User) ois.readObject();
ois.close();
System.out.println(user1.getID+" "+user1.getName());
3艾哈迈德
1阿里
2阿布
3艾哈迈德
- 您不是在每个循环中覆盖文件吗
for(User user: list){
//overwrites the file on each loop
FileOutputStream fos = new FileOutputStream("test.dat");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(user);
oos.close();
}
您需要为每个用户创建一个新文件,或者写入整个列表并将其读回
FileOutputStream fos = new FileOutputStream("test.dat");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(list);
oos.flush();
oos.close();
FileInputStream fis = new FileInputStream("test.dat");
ObjectInputStream ois = new ObjectInputStream(fis);
List<User> users = (List<User>) ois.readObject();
ois.close();
for(User user : users){
System.out.println(user.getID() +" " + user.getName());
}
FileOutputStream fos=新的FileOutputStream(“test.dat”);
ObjectOutputStream oos=新的ObjectOutputStream(fos);
oos.writeObject(列表);
oos.flush();
oos.close();
FileInputStream fis=新的FileInputStream(“test.dat”);
ObjectInputStream ois=新ObjectInputStream(fis);
List users=(List)ois.readObject();
ois.close();
for(用户:用户){
System.out.println(user.getID()+“”+user.getName());
}
问题显然在于列表中包含的数据。进行适当的调试,找出查询返回单个结果而不是所有结果的原因。