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

我正在尝试通过使用休眠运行查询来从数据库中获取一些数据。然后,数据将存储在使用查询.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工作台中的查询,它工作得很好,所以我真的很困惑为什么它在程序中不起作用。我坚持使用这个查询,因为它是我发现的唯一一个会根据从日期参数收集的月份和年份返回数据的查询,如果有人知道一个查询也会返回我需要的数据,请告诉我。


紫衣仙女
浏览 87回答 1
1回答

富国沪深

问题解决了。显然,最新版本的hibernate不支持 month()和yor()函数,因此我将不得不从从数据库中获取的所有数据列表中选择java中所需的数据,或者使用不同的查询。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java