0
Я новичок в Hibernate, и я разрабатываю приложение с Hibernate. Конкретно, я пытаюсь выполнить следующий SQL-запрос с Hibernate:Реализация запроса HQL
select * from ifcitsv2013 where timestamp between startDate and finishDate and id = '50'
В Hibernate, у меня есть следующий код для запроса:
DetachedCriteria dc = DetachedCriteria.forClass(IfcitsSensorphistory.class).add(Property.forName("id").eq(sDevice));
List<Ifcitsv2013> readings = session.createCriteria(Ifcitsv2013.class).add(Property.forName("ifcitsSensorphistory").gt(dc)).list();
Класс отображения Ifcitsv2013
выглядит следующим образом:
public class Ifcitsv2013 implements Serializable {
private static final long serialVersionUID = 1L;
private long readingid;
private IfcitsSensorphistory ifcitsSensorphistory;
private Timestamp timestamp;
private String value;
private String direction;
private String quality;
private String status;
и класс IfcitsSensorphistory
является:
public class IfcitsSensorphistory {
private String id;
private String description;
private Timestamp starttime;
private Timestamp endtime;
private String timeseriesdatatype;
private String dataorigin;
private String usagedefineddataorigin;
private String unit;
private String value;
Когда я выполнить запрос, я получил Exception
:
Exception in thread "main" java.lang.NullPointerException
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getProjectedTypes(CriteriaQueryTranslator.java:362)
at org.hibernate.criterion.SubqueryExpression.createAndSetInnerQuery(SubqueryExpression.java:153)
at org.hibernate.criterion.SubqueryExpression.toSqlString(SubqueryExpression.java:69)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:380)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:114)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:83)
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:92)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1687)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
at com.cartif.dwhconnector.manager.DatabaseCommunicator.retrieveHistoricalData(DatabaseCommunicator.java:242)
at com.cartif.dwhconnector.manager.DWHManager.retrieveData(DWHManager.java:62)
at unittest.DWHConnectorTester.main(DWHConnectorTester.java:31)
Может кто-нибудь помочь мне развить правильный запрос?
Привет, спасибо за ответ, я уверен, открыт сеанс, проблема возникает из отношений между Идентификатор столбца таблицы Ifcitsv2013, которая не является прямым атрибутом в классе, но отношения с table IfcitsSensorphistory –
Конечно, чтобы иметь атрибут из другой таблицы, вы должны присоединиться к этой таблице в запросе. –