为了账号安全,请及时绑定邮箱和手机立即绑定

休眠在调用查询时引发空点异常。.

休眠在调用查询时引发空点异常。.

紫衣仙女 2022-09-22 16:15:29

我正在尝试通过使用休眠运行查询来从数据库中获取一些数据。然后,数据将存储在使用查询.list 方法的列表中。问题是我在运行 query.list 方法时收到一个空点例外,我认为这是因为查询不返回任何用于列出的数据。


这是产生出口的方法


public static void getDataForMonth(int yearCount ,int monthCount){

        try {

            session.beginTransaction();

            LocalDate date = LocalDate.of(yearCount, monthCount, 1);


            Query query = session.createQuery("select t from Task t where month(t.date) = month(:date)  and year(t.date) = year(:date)");


            query.setParameter("date", dtf.format(date));

            taskList = query.list();

            session.getTransaction().commit();


            } finally {

            session.close();

        }

    }

我有一堆类似的方法,它们的工作原理相同,但具有不同的查询,它们工作得很好。


例如:


public static void getDataByDescriptionAndDate(String description, String date) {

        try {

            session.beginTransaction();


            Query query = session.createQuery("select c.id, c.description, c.completion, c.date from Task c where c.description = :desc and c.date = :dt");


            query.setParameter("desc", description).setParameter("dt", date);

            taskList = query.list();

            session.getTransaction().commit();


        } finally {

            Main.getFactory().getCurrentSession().close();

        }

    }

我尝试过以String格式传递日期参数,但出现同样的问题,我也尝试了MySQL工作台中的查询,它工作得很好,所以我真的很困惑为什么它在程序中不起作用。我坚持使用这个查询,因为它是我发现的唯一一个会根据从日期参数收集的月份和年份返回数据的查询,如果有人知道一个查询也会返回我需要的数据,请告诉我。


查看完整描述

1 回答

?
富国沪深

TA贡献1478条经验 获得超9个赞

问题解决了。显然,最新版本的hibernate不支持 month()和yor()函数,因此我将不得不从从数据库中获取的所有数据列表中选择java中所需的数据,或者使用不同的查询。


查看完整回答
反对 回复 5天前

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信