-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Closed as not planned
Labels
for: external-projectFor an external project and not something we can fixFor an external project and not something we can fix
Description
Getting this start-up error:
Caused by: org.hibernate.query.SemanticException: Missing constructor for type 'ContractStatisticsDto' [SELECT new com.amplio.amplio.contract.dto.ContractStatisticsDto(DATE(c.createdAt), c.status, COUNT(c)) FROM contract c WHERE c.createdAt >= :startDate GROUP BY DATE(c.createdAt), c.status ORDER BY DATE(c.createdAt), c.status]
at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitInstantiation(SemanticQueryBuilder.java:1506)
at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitInstantiation(SemanticQueryBuilder.java:275)
at org.hibernate.grammars.hql.HqlParser$InstantiationContext.accept(HqlParser.java:4029)
at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSelectableNode(SemanticQueryBuilder.java:1453)
at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSelection(SemanticQueryBuilder.java:1407)
at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSelectClause(SemanticQueryBuilder.java:1400)
at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuery(SemanticQueryBuilder.java:1249)
at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuerySpecExpression(SemanticQueryBuilder.java:1035)
at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuerySpecExpression(SemanticQueryBuilder.java:275)
at org.hibernate.grammars.hql.HqlParser$QuerySpecExpressionContext.accept(HqlParser.java:2132)
at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSimpleQueryGroup(SemanticQueryBuilder.java:1020)
at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSimpleQueryGroup(SemanticQueryBuilder.java:275)
at org.hibernate.grammars.hql.HqlParser$SimpleQueryGroupContext.accept(HqlParser.java:2003)
at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSelectStatement(SemanticQueryBuilder.java:490)
at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitStatement(SemanticQueryBuilder.java:449)
at org.hibernate.query.hql.internal.SemanticQueryBuilder.buildSemanticModel(SemanticQueryBuilder.java:322)
at org.hibernate.query.hql.internal.StandardHqlTranslator.translate(StandardHqlTranslator.java:71)
at org.hibernate.query.internal.QueryInterpretationCacheStandardImpl.createHqlInterpretation(QueryInterpretationCacheStandardImpl.java:145)
at org.hibernate.query.internal.QueryInterpretationCacheStandardImpl.resolveHqlInterpretation(QueryInterpretationCacheStandardImpl.java:132)
at org.hibernate.internal.AbstractSharedSessionContract.interpretHql(AbstractSharedSessionContract.java:802)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:852)
Query:
@Query("SELECT new com.amplio.amplio.contract.dto.ContractStatisticsDto(" +
"DATE(c.createdAt), c.status, COUNT(c)) " +
"FROM contract c " +
"WHERE c.createdAt >= :startDate " +
"GROUP BY DATE(c.createdAt), c.status " +
"ORDER BY DATE(c.createdAt), c.status")
List<ContractStatisticsDto> findContractStatisticsByDateRange(LocalDateTime startDate);
Class:
public class ContractStatisticsDto {
private Date day;
private ContractStatus status;
private Long count;
public ContractStatisticsDto(Date day, ContractStatus status, Long count) {
this.day = day;
this.status = status;
this.count = count;
}
}
SQM is inferring that DATE(c.createdAt) is of type Object instead of java.util.Date on startup and its failing to start. Even though it's actually of type java.util.Date once the app starts and it gets query results. Workaround:
public class ContractStatisticsDto {
private Date day;
private ContractStatus status;
private Long count;
public ContractStatisticsDto(Object day, ContractStatus status, Long count) {
this.day = (Date) day;
this.status = status;
this.count = count;
}
}
Metadata
Metadata
Assignees
Labels
for: external-projectFor an external project and not something we can fixFor an external project and not something we can fix