Ejemplo n.º 1
0
  protected final <T> ParameterExpression<T> createParameterExpression(
      Class<T> paramClass, String name) {
    final EntityManager entityManager = this.getEntityManager();
    final EntityManagerFactory entityManagerFactory = entityManager.getEntityManagerFactory();
    final CriteriaBuilder criteriaBuilder = entityManagerFactory.getCriteriaBuilder();

    return criteriaBuilder.parameter(paramClass, name);
  }
Ejemplo n.º 2
0
  /**
   * Factory method for creating a {@link CriteriaQuery} employing standards and best practices in
   * general use within the portal. Query objects returned from this method should normally be
   * passed to {@link createCachedQuery}; this step is important for the sake of scalability.
   */
  protected final <T> CriteriaQuery<T> createCriteriaQuery(
      Function<CriteriaBuilder, CriteriaQuery<T>> builder) {
    final EntityManager entityManager = this.getEntityManager();
    final EntityManagerFactory entityManagerFactory = entityManager.getEntityManagerFactory();
    final CriteriaBuilder criteriaBuilder = entityManagerFactory.getCriteriaBuilder();

    final CriteriaQuery<T> criteriaQuery = builder.apply(criteriaBuilder);

    // Do in TX so the EM gets closed correctly
    final TransactionOperations transactionOperations = this.getTransactionOperations();
    transactionOperations.execute(
        new TransactionCallbackWithoutResult() {
          @Override
          protected void doInTransactionWithoutResult(TransactionStatus status) {
            entityManager.createQuery(
                criteriaQuery); // pre-compile critera query to avoid race conditions when setting
                                // aliases
          }
        });

    return criteriaQuery;
  }
  @Override
  public List<UsuarioApiario> buscarUsuarioApiario(UsuarioApiario instance) throws Exception {
    Open();
    CriteriaBuilder builder = emf.getCriteriaBuilder();
    CriteriaQuery<UsuarioApiario> criteria = builder.createQuery(UsuarioApiario.class);
    Root<UsuarioApiario> UsuarioApiarioRoot = criteria.from(UsuarioApiario.class);
    Join<UsuarioApiario, Apiario> apiarioRoot = UsuarioApiarioRoot.join("apiario");
    Join<UsuarioApiario, Usuario> usuarioRoot = UsuarioApiarioRoot.join("usuario");
    Join<UsuarioApiario, Temporada> temporadaRoot = UsuarioApiarioRoot.join("temporada");

    criteria.select(UsuarioApiarioRoot);
    List<Predicate> p = new ArrayList<Predicate>();

    if (instance != null) {
      System.out.println("usuarioApiario");
      if (instance.getIdUsuarioApiario() != null && instance.getIdUsuarioApiario().intValue() > 0) {
        System.out.println("usuarioApiario.idUsuarioApiario");
        Predicate condition =
            builder.equal(
                UsuarioApiarioRoot.get("idUsuarioApiario"), instance.getIdUsuarioApiario());
        p.add(condition);
      }
      if (instance.getApiario() != null) {
        if (instance.getApiario().getIdApiario() != null
            && instance.getApiario().getIdApiario().intValue() > 0) {
          System.out.println("apiario.idApiario");
          Predicate condition =
              builder.equal(apiarioRoot.get("idApiario"), instance.getApiario().getIdApiario());
          p.add(condition);
        }
      }
      if (instance.getUsuario() != null) {
        if (instance.getUsuario().getIdUsuario() != null
            && instance.getUsuario().getIdUsuario().intValue() > 0) {
          System.out.println("usuario.idUsuario");
          Predicate condition =
              builder.equal(usuarioRoot.get("idUsuario"), instance.getUsuario().getIdUsuario());
          p.add(condition);
        }
      }
      if (instance.getTemporada() != null) {
        if (instance.getTemporada().getIdTemporada() != null
            && instance.getTemporada().getIdTemporada().intValue() > 0) {
          System.out.println("temporada.idTemporada");
          Predicate condition =
              builder.equal(
                  temporadaRoot.get("idTemporada"), instance.getTemporada().getIdTemporada());
          p.add(condition);
        }
        if (instance.getTemporada().getEstadoTemporada() != null) {
          Predicate condition =
              builder.equal(
                  temporadaRoot.get("estadoTemporada"),
                  instance.getTemporada().getEstadoTemporada());
          p.add(condition);
        }
        if (instance.getTemporada().getEtapaTemporada() != null
            && instance.getTemporada().getEtapaTemporada().length() > 0) {
          Predicate condition =
              builder.like(
                  temporadaRoot.<String>get("etapaTemporada"),
                  "%" + instance.getTemporada().getEtapaTemporada() + "%");
          p.add(condition);
        }
      }
    }
    Predicate[] predicates = new Predicate[p.size()];
    p.toArray(predicates);
    criteria.where(predicates);

    List<UsuarioApiario> lista = em.createQuery(criteria).getResultList();
    em.close();
    return lista;
  }