我使用hibernate查询数据,数据正常,然后插入一条数据(手动插入的),刷新查询页面,数据还是没插入前的,不知道原因在那里?我使用的是list查询应该不牵扯缓存吧。public List select(){
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery("from a");
List list=query.list();
session.flush();
session.close();
return list;
}
hibernate配置文件如下<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3308/test
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">mysql_5</property>
<property name="connection.password">meatin</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery("from a");
List list=query.list();
session.flush();
session.close();
return list;
}
hibernate配置文件如下<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3308/test
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">mysql_5</property>
<property name="connection.password">meatin</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
public void insert(){
Session session=HibernateSessionFactory.openSession();
a value=new a();
Transaction Tran=session.beginTransaction();
value.setTtt("yy");
session.save(value);
Tran.commit();
session.close();
}
另外,请你帖一下a.hbm.xml中的相关配置。
public ActionForward query(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
SubjectManager manager = ManagerFactory.createSubjectManager();
List subjectList = manager.getAllSubject();
System.out.println("List.size()="subjectList.size());
request.setAttribute("subjectList", subjectList);
return mapping.findForward("success");
}首先我向数据库里添加了3条记录
然后执行了上面的Action
此时输出 List.size()=3 并且Hibernate发出了查询语句
然后再执行上面的Action
之后我在向数据库中添加3条记录
此时仍然输出 List.size()=3 Hibernate同样发出了查询语句然后在JUnit中写了个测试方法 同Action中的一样
public void testShowSubject(){
SubjectManager manager = ManagerFactory.createSubjectManager();
List subjectList = manager.getAllSubject(); System.out.println("List.size()="subjectList.size());}此时输出 List.size()=6 Hibernate发出了查询语句望高人能指点 谢谢
我和你的问题一样 在JUnit中查询上来的List中是最新的数据 但在Action中用相同的代码查询上来的List就是为更新的数据 但是只要 更新其他表的数据后 再查找此表的数据就更新了 具体原因我也很郁闷呀。。 JUnit中测试就OK 放在Action中就出问题 附上我的代码:
public ActionForward query(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
SubjectManager manager = ManagerFactory.createSubjectManager();
List subjectList = manager.getAllSubject();
System.out.println("List.size()="subjectList.size());
request.setAttribute("subjectList", subjectList);
return mapping.findForward("success");
}首先我向数据库里添加了3条记录
然后执行了上面的Action
此时输出 List.size()=3 并且Hibernate发出了查询语句
之后我在向数据库中添加3条记录
然后再执行上面的Action
此时仍然输出 List.size()=3 Hibernate同样发出了查询语句然后在JUnit中写了个测试方法 同Action中的一样
public void testShowSubject(){
SubjectManager manager = ManagerFactory.createSubjectManager();
List subjectList = manager.getAllSubject();
System.out.println("List.size()="subjectList.size());}此时输出 List.size()=6 Hibernate发出了查询语句
Session session = HibernateSessionFactory.getSession();
String queryString = "from TCase";
Query queryObject = session.createQuery(queryString);
List<TCase> tCaseList = queryObject.list();
session.close();纠结了一下午,最后无奈加了事务解决了
Session session = HibernateSessionFactory.getSession();
Transaction t = session.beginTransaction();
String queryString = "from TCase";
Query queryObject = session.createQuery(queryString);
List<TCase> tCaseList = queryObject.list();
t.commit();
session.close();求哪位大哥讲下这是什么原因。