Причина: org.hibernate.QueryException: не удалось разрешить запрошенное
тип для CAST: INT [SELECT SUBSTRING (referenceComptable, 8, 14) AS
seqNum, SUBSTRING (referenceComptable, 4,7) AS yearCegid,
SUBSTRING (referenceComptable, 1,3) КАК ЖУРНАЛ ОТ
com.dso.model.comptabilite.cegid.EtapeJudiciaireLnkFactureActesHonoraires
ГДЕ dateCegidGenerated МЕЖДУ: date И: dateYearIntervalDate
ПОРЯДОК ПО CAST (seqNum AS INT), CAST (yearCegid AS INT), CAST (журнал AS
INT) ASC]
HQL-запрос:
public ScrollableResults retrieveSequenceNumberForCegidGenerated () {
StringBuilder queryBuilder = new StringBuilder(" SELECT SUBSTRING(referenceComptable , 8, 14) AS seqNum, SUBSTRING(referenceComptable, 4,7) AS yearCegid, SUBSTRING(referenceComptable, 1,3) AS journal")
.append(" FROM EtapeJudiciaireLnkFactureActesHonoraires ")
.append(" WHERE dateCegidGenerated BETWEEN :date AND :dateYearIntervalDate ")
.append(" ORDER BY CAST(seqNum AS INT), CAST(yearCegid AS INT), CAST(journal AS INT) ASC ");
Query query = getFilteredCurrentSession().createQuery(queryBuilder.toString());
//SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
Date date = new Date();
LocalDate yearIntervalDate = LocalDate.now().minusDays(365);
Date dateYearIntervalDate = Date.from(yearIntervalDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
query.setParameter("date", date);
query.setParameter("dateYearIntervalDate", dateYearIntervalDate);
ScrollableResults referenceComptable = query.scroll(ScrollMode.FORWARD_ONLY);
query.setCacheMode(CacheMode.IGNORE)
.setFetchSize(500);
return referenceComptable;
}
Когда я пытался CAST как INT, он тоже не работал. Что можно сделать, чтобы привести его из строки в целое число?
Трассировка стека
Причина: org.hibernate.QueryException: не удалось разрешить запрошенное
тип для CAST: INTEGER [ВЫБРАТЬ СУБСТРИНКУ (referenceComptable, 8, 7)
AS seqNum, SUBSTRING (referenceComptable, 4,4) AS yearCegid,
SUBSTRING (referenceComptable, 1,3) КАК ЖУРНАЛ ОТ
com.dso.model.comptabilite.cegid.EtapeJudiciaireLnkFactureActesHonoraires
ГДЕ dateCegidGenerated МЕЖДУ: date И: dateYearIntervalDate
ЗАКАЗАТЬ НА АКТЕРУ (SUBSTRING (referenceComptable, 8, 14) КАК INTEGER),
CAST (SUBSTRING (referenceComptable, 4,7) AS INTEGER), журнал ASC] в
org.hibernate.QueryException.generateQueryException (QueryException.java:120)
~ [hibernate-core-5.0.2.Final.jar: 5.0.2.Final] в
org.hibernate.QueryException.wrapWithQueryString (QueryException.java:103)
~ [hibernate-core-5.0.2.Final.jar: 5.0.2.Final] в
org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile (QueryTranslatorImpl.java:218)
~ [hibernate-core-5.0.2.Final.jar: 5.0.2.Final] в
org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile (QueryTranslatorImpl.java:142)
~ [hibernate-core-5.0.2.Final.jar: 5.0.2.Final] в
org.hibernate.engine.query.spi.HQLQueryPlan. (HQLQueryPlan.java:115)
~ [hibernate-core-5.0.2.Final.jar: 5.0.2.Final] в
org.hibernate.engine.query.spi.HQLQueryPlan. (HQLQueryPlan.java:76)
~ [hibernate-core-5.0.2.Final.jar: 5.0.2.Final] в
org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan (QueryPlanCache.java:150)
~ [hibernate-core-5.0.2.Final.jar: 5.0.2.Final] в
org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan (AbstractSessionImpl.java:298)
~ [hibernate-core-5.0.2.Final.jar: 5.0.2.Final] в
org.hibernate.internal.AbstractSessionImpl.createQuery (AbstractSessionImpl.java:236)
~ [hibernate-core-5.0.2.Final.jar: 5.0.2.Final] в
org.hibernate.internal.SessionImpl.createQuery (SessionImpl.java:1825)
~ [hibernate-core-5.0.2.Final.jar: 5.0.2.Final] в
com.dso.dao.comptabilite.cegid.impl.ReferenceComptableSequenceDAOImpl.retrieveSequenceNumberForCegidGenerated