【发布时间】:2014-06-01 16:49:48
【问题描述】:
我的问题是 Hibernate 不会从 DB 中读取任何数据,如果它已经手动插入(我正在使用 MySQL)。我的意思是我删除了 PATIENTS 表,然后 Hibernate 为我创建了它,然后我从 PATIENTS.sql 中插入了数据。当我启动我的应用程序时,没有患者显示在例如 show_patients.jsp 中。但我仍然可以使用插入的记录通过登录页面访问我的应用程序。
这是我在@Controller 中的方法:
@RequestMapping(value = "/therapist/showPatients", method = RequestMethod.GET)
public String showExistingPatients(ModelMap map) {
List<Patient> patientsList = userService.getAllPatients();
map.addAttribute("patientsList", patientsList);
return "therapist/show_patients";
}
这是我在 UserDAOImpl 中的方法:
public List<Patient> selectAllPatients(){
DetachedCriteria criteria = DetachedCriteria.forClass(Patient.class);
List<Patient> patients = null;
try{
patients = getHibernateTemplate().findByCriteria(criteria);
} catch (DataAccessException ex){
ex.printStackTrace();
}
return patients;
}
我可以在 show_patients.jsp 中查看任何患者的唯一方法是通过我的应用程序添加新患者,允许 Hiberante 保存它。所以我的问题是,是否有任何条件为什么这仅在 Hibernate 的 save() 之后才有效,还是我做错了什么?
【问题讨论】:
-
插入 PATIENTS.sql 后手动选择可以看到吗?您可以尝试激活 show_sql=true 然后手动执行查询并查看发生情况
-
如果我从 MySQL Workbench 手动选择一切都很好。我可以看到所有数据。
-
在使用 MySQL Workbench 时,您能在同一张表中看到两组数据(手动插入和休眠)吗?
-
是的。我认为 pasha701 是对的,并且以某种方式涉及到 cashe,因为现在我可以在我的应用程序中看到手动插入和休眠插入的数据。
标签: java hibernate spring-mvc dao