Я использую java конструктор критериев, это мой код
RepositoryFactory.emf=Persistence.createEntityManagerFactory("onezero");
String Symbol = "EURUSD";
TradingHistory tradingHistorys = RepositoryFactory.getTradingHistoryRepo().findPriceEmpty(Symbol);
String symbols = tradingHistorys.getSymbol();
Date created = tradingHistorys.getCreated_at();
public TradingHistory findPriceEmpty( 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.and(criteriaBuilder.equal(root.get("Symbol"), Symbol)
,(criteriaBuilder.equal(root.get("Price"), null)))));
}
};
return singleResult(conditions,null,0,1,0);
}
, когда я использую null ()
public TradingHistory findPriceEmpty( 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.and(criteriaBuilder.equal(root.get("Symbol"), Symbol)
,(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 157 [select generatedAlias0 from com.dxtr.hibernate.model.TradingHistory as generatedAlias0 where ( generatedAlias0.Symbol=:param0 ) and ( generatedAlias0.Price is null=generatedAlias0 )]
мой вопрос, как искать, когда цена = null? потому что, когда я использую этот код, я получил ошибку Java исключение нулевого указателя. так что у нас есть проблема ...
пожалуйста, помогите мне исправить это