我正在嘗試通過使用休眠運(yùn)行查詢來(lái)從數(shù)據(jù)庫(kù)中獲取一些數(shù)據(jù)。然后,數(shù)據(jù)將存儲(chǔ)在使用查詢.list 方法的列表中。問題是我在運(yùn)行 query.list 方法時(shí)收到一個(gè)空點(diǎn)例外,我認(rèn)為這是因?yàn)椴樵儾环祷厝魏斡糜诹谐龅臄?shù)據(jù)。這是產(chǎn)生出口的方法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格式傳遞日期參數(shù),但出現(xiàn)同樣的問題,我也嘗試了MySQL工作臺(tái)中的查詢,它工作得很好,所以我真的很困惑為什么它在程序中不起作用。我堅(jiān)持使用這個(gè)查詢,因?yàn)樗俏野l(fā)現(xiàn)的唯一一個(gè)會(huì)根據(jù)從日期參數(shù)收集的月份和年份返回?cái)?shù)據(jù)的查詢,如果有人知道一個(gè)查詢也會(huì)返回我需要的數(shù)據(jù),請(qǐng)告訴我。
1 回答

富國(guó)滬深
TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
問題解決了。顯然,最新版本的hibernate不支持 month()和yor()函數(shù),因此我將不得不從從數(shù)據(jù)庫(kù)中獲取的所有數(shù)據(jù)列表中選擇java中所需的數(shù)據(jù),或者使用不同的查詢。
添加回答
舉報(bào)
0/150
提交
取消