我想從數據庫中的一行中提取年份,以便將其與值進行比較。使用jpql和jpa從日期fileld中提取年份
這裏是我的功能
public List<Dossier> getAllDossierParAn() {
Date date = new Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int strI = calendar.get(Calendar.YEAR);
TypedQuery<Dossier> query;
query = em.createQuery("SELECT d FROM DOSSIER d WHERE EXTRACT(YEAR ,d.dateCreation)=2015", Dossier.class);
System.out.println(strI);
return query.getResultList();
}
我總是得到,而創造的EntityManager查詢時
例外: 異常說明:問題彙編[SELECT d FROM專題報道d,其中提取物(一年d.dateCreation)= 2015]。 [14,21]抽象模式類型'DOSSIER'是未知的。 [48,62]狀態字段路徑「d.dateCreation」無法解析爲有效類型。
我直接在數據庫中進行測試,它工作
select * from dossier where extract(year from date_creation)=2015
我使用jpa
和ejb
和jdeveloper
爲IDE。
關於將DATE傳遞到SUBSTRING中沒有任何「JPQL兼容」。 SUBSTRING僅適用於字符串或算術表達式。 –
這是,如果你想它與任何實現兼容。 – renke
Errm,你似乎沒有閱讀我的評論。 SUBSTRING只能在標準化的JPQL中接受字符串或算術表達式。 DATE既不是。 –