插入后同步hibernate的会话

时间:2012-01-15 15:48:22

标签: java mysql sql hibernate hibernate-mapping

我有代码选择数据库的所有行并删除它们。它持续执行此过程。当数据库中没有数据时,它会休眠2秒然后再次尝试。我的问题如下,当新数据添加到数据库时,我的代码看不到它。

测试:

我运行了我的代码,它正在等待新数据,几秒钟后我手动将数据添加到数据库中。我的代码根本没有看到新行。我100%确定我添加的数据实际上是在数据库中。

我正在使用Hibernate和MySQL。

代码:

String queryString = "select * from rawleads";
SQLQuery query = session.createSQLQuery(queryString);
ArrayList list = (ArrayList) query.list();

while (list.isEmpty()) {
    Thread.sleep(2000);
    query = session.createSQLQuery(queryString );
    list = (ArrayList) query.list();
    System.out.println("refreshing table");
}

System.out.println("Processing...");

我认为它可能与缓存有关,因为代码无法看到对数据库所做的更改。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

您可能必须在每次新迭代之前创建一个新事务。

编辑:

    while (running) {

        Transaction t = session.beginTransaction();
        try {
            String queryString = "select * from rawleads";
            SQLQuery query = session.createSQLQuery(queryString);
            List pendingLeads = query.list();

            if (pendingLeads.isEmpty()) {
                Thread.sleep(2000);
            } else {
                process(pendingLeads);
            }
            t.commit();
        } catch (Exception e) {
            t.rollback();
        }
    }