quarkus hibernate/panache nativequery

6qftjkof  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(251)

我正在尝试创建某种类型的更新端点,当您点击它时,它将从一个表插入到另一个表。基本上它是从一个名为 funds 那是什么 fundId , reportingfrequency 以及 country . 它保留了 fundIds 对于该值,它获取一个日期列表,这些日期是与postgres存储过程/函数联接的结果。下面是一个完整的sql查询示例。因此,理想情况下,如果表中有100行,它会将所有100行以及一个日期数组插入到表中 due_dates table。

INSERT INTO due_dates (fund_id, listdate)
SELECT fundid,
     (
        SELECT array_agg(weekdays::date)
        FROM generate_series(date'2021-01-01', date'2021-12-31', interval '1' day) as t(weekdays)
        LEFT JOIN holidays.poland(2021, 2021) f ON (weekdays = f.datestamp)
        WHERE f.datestamp IS NULL 
        AND extract(dow from weekdays) BETWEEN 1 AND 5
     )
FROM funds
WHERE reportingfrequency = 'Daily';

现在我的问题是我不知道如何。。。以编程方式执行此操作,以便根据 funds 表格。。。我不知道该如何抓住这个机会 country 字段来执行特定的存储过程调用。例如,如果一行 Poland 在它的 country 然后它会理想地调用 holidays.poland(2021, 2021) ... 如果这个国家是美国的话 holidays.usa(2021, 2021) . 以下是我当前的nativequery。

entityManager.createNativeQuery("INSERT INTO due_dates (fund_id, listdate)" +
                                        "SELECT fundid," +
                                            "(" +
                                            "SELECT array_agg(weekdays::date)" +
                                            "FROM generate_series(date'2021-01-01', date'2021-12-31', interval '1' day) as t(weekdays)" +
                                            "LEFT JOIN holidays." + country + "(" + year + "," + year + ") f ON (weekdays = f.datestamp)" +
                                            "WHERE f.datestamp IS NULL" + 
                                            "AND extract(dow from weekdays) BETWEEN 1 AND 5" +
                                            ")" +
                                        "FROM funds" +
                                        "WHERE reportingfrequency = 'Daily'; ")
        .executeUpdate();

在实现我想做的事情之前,我需要做些什么来调整原始的sql语句吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题