Hibernate CreateStoredProcedureRequesty块永久

Hibernate CreateStoredProcedureRequesty块永久,hibernate,jakarta-ee,derby,hibernate-entitymanager,Hibernate,Jakarta Ee,Derby,Hibernate Entitymanager,我一直在尝试从运行在Glassfish上的JavaEE应用程序中创建derby数据库的备份。我正在尝试使用StoredProcedureQueries来实现这一点,它们在下面的方法中工作得很好 public Backup doBackup(String path) throws QueryTimeoutException { StoredProcedureQuery query = em.createStoredProcedureQuery( "SYSCS_UT

我一直在尝试从运行在Glassfish上的JavaEE应用程序中创建derby数据库的备份。我正在尝试使用StoredProcedureQueries来实现这一点,它们在下面的方法中工作得很好

public Backup doBackup(String path) throws QueryTimeoutException { 
    StoredProcedureQuery query = em.createStoredProcedureQuery(
            "SYSCS_UTIL.SYSCS_BACKUP_DATABASE");
    query.registerStoredProcedureParameter(1, java.lang.String.class,
            ParameterMode.IN);
    query.setParameter(1, path);
    query.execute();
}
但是,我也希望像cronjob一样自动创建备份。要做到这一点,我想我只需要使用每n小时执行一次的ScheduleXecuterService。我为此编写了以下方法:

public void startScheduledBackupRunner() {
    long delay = 1;

    Runnable backupRunner = () -> {
        try {
            doBackup("/foo/bar/");
        } catch (PersistenceException e) {
            logger.fatal(e);
        }
    };

    ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
    scheduler.scheduleAtFixedRate(backupRunner, delay, delay, TimeUnit.HOURS);
}
backupRunner线程已成功执行,它还调用doBackup()方法。但是,调用createStoredProcedureQuery()时,它似乎遇到了问题。如果重要的话,我会像这样注入EntityManager em:

@PersistenceContext
EntityManager em;

我是不是错过了什么重要的东西?非常感谢任何线索。

好的,所以我找到了一个解决方案,它不需要使用
@Schedule
注释创建单独的线程。它并没有解决潜在的问题,我仍然不知道为什么第一种方法不起作用,它只是执行计划任务的另一种可能更优雅的方式