首页 > 解决方案 > 使用休眠显示数据库中的数据

问题描述

我是休眠的新手,我正在努力解决一个问题。我想使用 JSF 将对象列表显示到 .XHTML 页面。但我不知道为什么,我在途中丢失了数据。即使来自 DAO 的方法从数据库返回一个对象列表(我通过调试看到它),当我尝试将该列表分配给另一个类的用户列表时,我会丢失该数据并且来自 DAO 的列表变为空。因此,我的数据表中的 GUI 没有结果。

public class UsersBean {

        private List<User> allUsers;

        public UsersBean() {
        init();
        }

        private void init() {
        UsersController.doInitialise(allUsers);
        }

  // getters, setters

    }


public class UsersController {

    public static void doInitialise(List<User> users) {

    users = new ArrayList<User>();
    UserDao userDao = new UserDaoImpl();
    users = userDao.getAllEnities();
    System.out.println(users.toString());
    }

}

public class UserDaoImpl{

    @Override
    public List<User> getAllEnities() {

    List<User> users= null;
    Session session = null;
    Transaction transaction = null;
    try {
        session = sessionFactory.openSession();
        transaction = session.beginTransaction();
        org.hibernate.query.Query query = session.createQuery("from User");
        users= query.list();
        transaction.commit();
    }  finally {
        session.close();
    }
    return users;
    }

}

标签: javahibernate

解决方案


如果要修改原始列表的内容,请不要为其分配另一个列表对象,这将不起作用。

相反,只需直接更改内容,即:

public static void doInitialise(List<User> users) {

UserDao userDao = new UserDaoImpl();
users.addAll(userDao.getAllEnities());
System.out.println(users.toString());

}

推荐阅读