доброе утро всем,
я получил ошибку, когда я хочу получить данные для условия isNull с использованием построителя критериев
я получил ошибку вроде этой org.hibernate.query.criteria.internal.predicate.ComparisonPredicate cannot be cast to javax.persistence.criteria.CriteriaBuilder
здесь мой код
RepositoryFactory.emf=Persistence.createEntityManagerFactory("onezero");
String Symbol = "EURUSD";
TradingHistory tradingHistorys = RepositoryFactory.getTradingHistoryRepo().findPriceNull(Symbol);
String symbols = tradingHistorys.getSymbol();
Date time = tradingHistorys.getCreated_at();
System.out.println(symbols+"|"+time);
и здесь, когда я ищу нулевое условие
public TradingHistory findPriceNull(final String symbol) throws SQLException{
WhereClause<TradingHistory> conditions = new WhereClause<TradingHistory>() {
public void defineWhere(CriteriaBuilder criteriaBuilder, CriteriaQuery<TradingHistory> criteriaQuery,
Root<TradingHistory> root) {
// TODO Auto-generated method stub
criteriaQuery.select(root).where(((CriteriaBuilder) criteriaBuilder.equal(root.get("Price"), isNull()))
.and(criteriaBuilder.equal(root.get("Symbol"), symbol)));
}
};
return singleResult(conditions,null,0,1,0);
}
и здесь мой класс whereclause
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
public interface WhereClause<T> {
public void defineWhere(CriteriaBuilder criteriaBuilder,CriteriaQuery<T> criteriaQuery,Root<T> root);
}
я также должен попытаться использовать
public TradingHistory findBysymbol(String symbol) throws SQLException {
// TODO Auto-generated method stub
WhereClause<TradingHistory> conditions = new WhereClause<TradingHistory>() {
public void defineWhere(CriteriaBuilder criteriaBuilder, CriteriaQuery<TradingHistory> criteriaQuery,
Root<TradingHistory> root) {
// TODO Auto-generated method stub
criteriaQuery.select(root).where(criteriaBuilder.equal(root.get("Price").isNull(), root));
}
};
return singleResult(conditions,null,0,1,0);
}
но я получил ошибку типа
java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected AST node: is near line 1, column 116 [select generatedAlias0 from com.dxtr.hibernate.model.TradingHistory as generatedAlias0 where generatedAlias0.Price is null=generatedAlias0]
Я хочу знать, что является причиной этой ошибки?