【问题标题】:Hibernate does not see already inserted dataHibernate 看不到已经插入的数据
【发布时间】: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


【解决方案1】:

两种变体:

  1. 在 Hibernate 中打开了查询缓存。检查设置;也许,“evict”可用于从缓存中删除查询结果。
  2. 可能,WebServer 或浏览器设置中存在网页缓存,需要检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多