Datanucleus RDBMS JPA Entitymanager GAE Criteriabuilder Ошибка нескольких соединений org.datanucleus.store.rdbms.query.QueryToSQLMapper - PullRequest
0 голосов
/ 26 сентября 2018

Я получаю эту ошибку

java.lang.NullPointerException в org.datanucleus.store.rdbms.query.QueryToSQLMapper.compileFromClassExpression (QueryToSQLMapper.java:1199) в org.dreanu.rdbms.query.QueryToSQLMapper.compileFrom (QueryToSQLMapper.java:436) при org.datanucleus.store.rdbms.query.QueryToSQLMapper.compile (QueryToSQLMapper.java:380) при org.datanucleus.store.rdbms.query.JPQLQuery.compileQueryFull(JPQLQuery.java:799) в org.datanucleus.store.rdbms.query.JPQLQuery.compileInternal (JPQLQuery.java:280) в org.datanucleus.store.query.Query.executeQuery (Query.java:1747 at)datanucleus.store.query.Query.executeWithMap (Query.java:1693) в org.datanucleus.api.jpa.JPAQuery.getResultList (JPAQuery.java:185) в ...........

Я пытаюсь выполнить

      EntityManager mgr = null;
      Cursor cursor = null;
      List<StudentMark> execute = null;

    try {

        mgr = getEntityManager();
        CriteriaBuilder cb = mgr.getCriteriaBuilder();
        CriteriaQuery<StudentMark> query = cb
                .createQuery(StudentMark.class);
        Root<StudentMark> from = query.from(StudentMark.class);
        CriteriaQuery<StudentMark> select = query.select(from);

        List<Predicate> predicates = new ArrayList<Predicate>();

        /* Set of Filters Use to Filter Query Results */
        if (subjectId != null) {
            predicates.add(cb.equal(from.join("subject").get("subjectId"),
                    cb.parameter(Long.class, "subjectId")));
        }

        if (studentRecordId != null) {
            predicates.add(cb.equal(from.join("studentRecord").get("studentRecordId"),
                    cb.parameter(Long.class, "studentRecordId")));

        }


        query.select(from).where(predicates.toArray(new Predicate[] {}));

        TypedQuery<StudentMark> typedQuery = mgr.createQuery(select);

        /* set the parameters of the above mentioned filters */
        if (subjectId != null) {
            typedQuery.setParameter("subjectId", subjectId);
        }
        if (studentRecordId != null) {
            typedQuery.setParameter("studentRecordId", studentRecordId);
        }

        if (limit != null) {
            typedQuery.setFirstResult(0);
            typedQuery.setMaxResults(limit);
        }

        execute = (List<StudentMark>) typedQuery.getResultList();
    } finally {
        mgr.close();
    }

Ошибка создания, когда я пытаюсь передать 2 параметра одновременно для запроса.Если я передаю только один параметр, результат генерирует нормально.

Я использую эти jar Jars И использую стандартный проект google app engine с облаком sql, вот мой persistance.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">


 <persistence-unit name="Demo">
  <properties>
      <property name="javax.persistence.jdbc.user" value="root" />
      <!-- this is required if you're connecting to a 2nd generation cloud-sql db -->
      <property name="javax.persistence.jdbc.password" value="zaq123!@#" />
      <property name="datanucleus.autoCreateSchema" value="true"/>
  </properties>
 </persistence-unit>

...