Java Конструктор критериев для нулевого значения - PullRequest
0 голосов
/ 05 мая 2020

Я использую 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 исключение нулевого указателя. так что у нас есть проблема ...

пожалуйста, помогите мне исправить это

1 Ответ

0 голосов
/ 05 мая 2020

Похоже, вы использовали бы isNull () , как в следующем примере:

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) {                criteriaQuery.select(root).where((criteriaBuilder.and(criteriaBuilder.equal(root.get("Symbol"), Symbol),(criteriaBuilder.isNull(root.get("Price")))));
            }
        };
        return singleResult(conditions,null,0,1,0);

Надеюсь, что это поможет. Если у вас возникнут дальнейшие проблемы, оставьте комментарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...