java - 使用休眠显示数据库中的数据
问题描述
我是休眠的新手,我正在努力解决一个问题。我想使用 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;
}
}
解决方案
如果要修改原始列表的内容,请不要为其分配另一个列表对象,这将不起作用。
相反,只需直接更改内容,即:
public static void doInitialise(List<User> users) {
UserDao userDao = new UserDaoImpl();
users.addAll(userDao.getAllEnities());
System.out.println(users.toString());
}
推荐阅读
- express - 使用 express/jwt 对受保护路由进行身份验证
- arrays - bytearray 中的值交换不会覆盖而是插入
- django - 为什么我不能在 django 中使用模板标签
- python - 如何以更短的方式设置一长串时间的属性?
- c# - 在 AutoMapper 中使用 ForMember 打开泛型?
- git - 在 Kubernetes 上自动部署
- javascript - 如何使用 nodemailer 发送 blob 链接?
- javascript - 比之前的渲染 React 问题渲染了更多的钩子
- javascript - 我可以使用 componentDidMount 获得每个状态监视器的 useEffect 吗?
- xml - Groovy XmlSlurper 中的父节点