我想从数据库中的一行中提取年份,以便将其与值进行比较。使用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既不是。 –