当前位置: 首页 > 知识库问答 >
问题:

数据库已更新,但在Hibernate状态下选择查询没有给出结果[重复]

萧业
2023-03-14

我在Hibernate上使用JPA,它以TokuDb为引擎连接到MariaDb。

我正在运行一个无限循环,该循环根据一些标志检查表是否有新行,如果找到新行,则处理它。

do {
        try {
            if (!em.isOpen()) {
                em = PersistenceLocal.getEntityManager();
            }
            TypedQuery<FileMaster> query = em.createQuery("SELECT f FROM FileMaster f WHERE f.misUpdated = :misUpdated AND f.status = :status", FileMaster.class);
            query.setParameter("misUpdated", false);
            query.setParameter("status", "sent");
            query.set
            List<FileMaster> result = query.getResultList();
            if (result.size() > 0) {

                EntityTransaction tx = em.getTransaction();
                tx.begin();
                for (FileMaster fm : result) {

                    SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
                    String dt = dateFormat.format(fm.getSheduleDate());

                    // find out what is the uid in file master
                    TypedQuery<Misthird> misthird = em.createNamedQuery("Misthird.findByPrimarKey", Misthird.class);

                    misthird.setParameter("uid", Integer.valueOf(fm.getCrn()));
                    misthird.setParameter("dt", fm.getSheduleDate(), TemporalType.DATE);
                    Misthird m;
                    try {
                        m = misthird.getSingleResult();
                    } catch (Exception ex) {
                        m = new Misthird(Integer.valueOf(fm.getCrn()), fm.getSheduleDate());
                    }
                    Calendar c = Calendar.getInstance();
                    c.setTime(fm.getSheduleDate());
                    //System.out.println("Scheduled Date = "+fm.getSheduleDate());
                    int hr = c.get(Calendar.HOUR_OF_DAY);
                    System.out.println("Hour = " + hr);
                    switch (hr) {
                        case 0:
                            m.setHr(m.getHr() + fm.getTRecord());
                            break;
                        case 1:
                            m.setHr1(m.getHr1() + fm.getTRecord());
                            break;
                        case 2:
                            m.setHr2(m.getHr2() + fm.getTRecord());
                            break;
                        case 3:
                            m.setHr3(m.getHr3() + fm.getTRecord());
                            break;
                        case 4:
                            m.setHr4(m.getHr4() + fm.getTRecord());
                            break;
                        case 5:
                            m.setHr5(m.getHr5() + fm.getTRecord());
                            break;
                        case 6:
                            m.setHr6(m.getHr6() + fm.getTRecord());
                            break;
                        case 7:
                            m.setHr7(m.getHr7() + fm.getTRecord());
                            break;
                        case 8:
                            m.setHr8(m.getHr8() + fm.getTRecord());
                            break;
                        case 9:
                            m.setHr9(m.getHr9() + fm.getTRecord());
                            break;
                        case 10:
                            m.setHr10(m.getHr10() + fm.getTRecord());
                            break;
                        case 11:
                            m.setHr11(m.getHr11() + fm.getTRecord());
                            break;
                        case 12:
                            m.setHr12(m.getHr12() + fm.getTRecord());
                            break;
                        case 13:
                            m.setHr13(m.getHr13() + fm.getTRecord());
                            break;
                        case 14:
                            m.setHr14(m.getHr14() + fm.getTRecord());
                            break;
                        case 15:
                            m.setHr15(m.getHr15() + fm.getTRecord());
                            break;
                        case 16:
                            m.setHr16(m.getHr16() + fm.getTRecord());
                            break;
                        case 17:
                            m.setHr17(m.getHr17() + fm.getTRecord());
                            break;
                        case 18:
                            m.setHr18(m.getHr18() + fm.getTRecord());
                            break;
                        case 19:
                            m.setHr19(m.getHr19() + fm.getTRecord());
                            break;
                        case 20:
                            m.setHr20(m.getHr20() + fm.getTRecord());
                            break;
                        case 21:
                            m.setHr21(m.getHr21() + fm.getTRecord());
                            break;
                        case 22:
                            m.setHr22(m.getHr22() + fm.getTRecord());
                            break;
                        case 23:
                            m.setHr23(m.getHr23() + fm.getTRecord());
                            break;
                    }
                    // update total records 
                    m.setTot(m.getTot() + fm.getTRecord());
                    System.out.println("Total = " + m.getTot());
                    if (em.contains(m)) {
                        em.persist(m);
                    } else {
                        m = em.merge(m);
                        em.persist(m);
                    }
                    // create a new table for fileid and misupdated status, use trigger and keep filemaster free.

                    if (!em.contains(fm)) {
                        fm = em.merge(fm);
                    }

                    fm.setMisUpdated(true);
                    em.persist(fm);
                }

                System.out.println("MIS updated and Transaction Commited " + new Date());

                tx.commit();
            }

        } catch (Exception ex) {

            ex.printStackTrace();
        } finally {
            try {
                em.close();
                Thread.sleep(1000);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    } while (cron_mode);
}
Hibernate: select filemaster0_.FileID as FileID1_3_, filemaster0_.after_rev as after_re2_3_, filemaster0_.apx_priotity as apx_prio3_3_, filemaster0_.befor_rev as befor_re4_3_, filemaster0_.cancel_date as cancel_d5_3_, filemaster0_.cp as cp6_3_, filemaster0_.credit as credit7_3_, filemaster0_.CRN as CRN8_3_, filemaster0_.cut as cut9_3_, filemaster0_.dnd_Checked as dnd_Che10_3_, filemaster0_.download_status as downloa11_3_, filemaster0_.FileName as FileNam12_3_, filemaster0_.gateway as gateway13_3_, filemaster0_.is_credit_revers as is_cred14_3_, filemaster0_.is_credit_reversed as is_cred15_3_, filemaster0_.mis_updated as mis_upd16_3_, filemaster0_.modem_distibute as modem_d17_3_, filemaster0_.msg as msg18_3_, filemaster0_.pid as pid19_3_, filemaster0_.priority as priorit20_3_, filemaster0_.sender_id as sender_21_3_, filemaster0_.shedule_date as shedule22_3_, filemaster0_.signature as signatu23_3_, filemaster0_.Status as Status24_3_, filemaster0_.t_record as t_recor25_3_, filemaster0_.t_reversal as t_rever26_3_, filemaster0_.type as type27_3_, filemaster0_.unicode as unicode28_3_, filemaster0_.UploadDate as UploadD29_3_ from file_master filemaster0_ where filemaster0_.mis_updated=? and filemaster0_.Status=?

共有1个答案

巫马淳
2023-03-14

您可以先执行session.flush()(在您的例子中是em.flush()),然后才能执行em.close()

 类似资料:
  • 问题内容: 当用户最初单击按钮时,将运行查询,并将每一行放入JPanel中并添加到显示中,以供用户查看。哪个工作正常。 我的问题是,我希望用户能够根据它们提供的值(通过JTextField)过滤这些结果,并且我希望显示的记录随着JTextField值的更改而更新。每次更改JTextField时都会形成并执行我的查询,但是我找不到更新显示记录的方法。 任何帮助,将不胜感激。 该代码花了一些时间进行编

  • 这是我索引中的文档(也可以有几个): 从逻辑上讲,我试图建立这个条件: 我的问题(来自kibana): 我正在与上述范围内的字段的范围查询与上面的其他字段进行比较。但没有得到任何命中!我想检索具有在给定和日期。 在这个领域很缺乏经验,不知道为什么不起作用!请帮助如何修复此查询以做到这一点?

  • 我有一个带有spring 3和hibernate框架的标准web应用程序。我有两个应用程序上下文。xml和hibernate。cfg。包含数据库连接数据的xml文件: ... 现在,我需要使用动态数据库名称更改这个应用程序,如何在ServletContextListener中设置它的运行时。contextInitialized?

  • 我的Redux状态是如何更新的,可以在pokelist.js文件中注销,但是我的状态变量没有设置好,cardList还是一个空数组,我如何正确设置状态?我注销pokelist.js文件中的集合,它首先注销一个空数组,然后是一个包含元素的数组。

  • 我希望执行一个(Postgre)SQL本机查询,它既不是“选择”查询,也不是“更新”查询,也不是“删除”查询。它是“刷新物化视图名称”据我所知没有结果。 使用JPA/JPQL执行此类查询的正确方法是什么? 似乎需要结果集或更新/删除计数。

  • 当我在Hibernate状态下更新时。cfg。xml文件,当我给出会话时。save()和事务。commit(),对象将保存在数据库中,但仍会在日志中出现一些错误,如下所示。 组织。冬眠工具模式。spi。CommandAcceptanceException:通过org上的JDBC语句执行DDL“创建表配置文件(用户名varchar(255)不为空、名字varchar(255)、姓氏varchar(2