/**
   * Tests if SpatialExpressions will work properly without hung up when using ANYINTERACT query
   * type
   */
  public void testSimpleReadQuery() {
    if (supported) {
      JGeometry circle = JGeometry.createCircle(-10, 0, 0, 10, 10, 0, 0);
      JGeometry newCircle = JGeometry.createCircle(0, -10, 0, 10, 10, 0, 0);
      EntityManager em = createEntityManager(STRUCT_CONVERTER_PU);
      try {
        beginTransaction(em);
        SimpleSpatial simpleSpatial = new SimpleSpatial(2000, circle);
        em.persist(simpleSpatial);
        commitTransaction(em);
      } catch (RuntimeException ex) {
        if (isTransactionActive(em)) {
          rollbackTransaction(em);
        }
        throw ex;
      }

      clearCache(STRUCT_CONVERTER_PU);

      ReadAllQuery raq = new ReadAllQuery(SimpleSpatial.class);
      ExpressionBuilder eb = raq.getExpressionBuilder();

      SpatialParameters parameters = new SpatialParameters();
      parameters.setQueryType(SpatialParameters.QueryType.WINDOW).setMask(Mask.ANYINTERACT);
      Expression selectionCriteria =
          SpatialExpressionFactory.relate(eb.get("jGeometry"), newCircle, parameters);
      raq.setSelectionCriteria(selectionCriteria);
      raq.addAscendingOrdering("id");
      getServerSession(STRUCT_CONVERTER_PU).executeQuery(raq);

      // now read using jpql -  should generate the same sql as the ReadAllQuery above.
      clearCache(STRUCT_CONVERTER_PU);
      Query query =
          em.createQuery(
              "SELECT ss FROM SimpleSpatial ss WHERE FUNC('MDSYS.SDO_RELATE', ss.jGeometry, :otherGeometry, :params) = 'TRUE' ORDER BY ss.id ASC");
      query.setParameter("otherGeometry", newCircle);
      query.setParameter("params", parameters.getParameterString());
      query.getResultList();
    }
  }