コード例 #1
0
  @SuppressWarnings("unchecked")
  public List<ShopRoomTarriffCorporateRateView> search(ScrollableSettings settings) {
    if (settings.getFilter() == null || settings.getFilter().replaceAll("\\s+", "").length() == 0) {
      return new ArrayList<ShopRoomTarriffCorporateRateView>();
    }

    FindByExample findByExample =
        DaoUtil.search(
            new ShopRoomTarriffCorporateRateView(),
            settings.getFilter(),
            ShopRoomTarriffCorporateRateView.class,
            em);
    Query query = null;

    if (findByExample.getIsNativeQuery()) {
      String queryString =
          DaoUtil.sasQueryRaw(
              findByExample.getSelectClause(),
              settings,
              ShopRoomTarriffCorporateRateView.class,
              em);
      query =
          em.createNativeQuery(
              queryString
                  .replace("SELECT " + shortName, "SELECT *")
                  .replace(
                      className, DaoUtil.readTableName(ShopRoomTarriffCorporateRateView.class)),
              ShopRoomTarriffCorporateRateView.class);

      if (queryString.contains(":firmid")) {
        query.setParameter("firmid", settings.getSasUser().getUser().getFirmid());
      } else if (queryString.contains(":firm")) {
        query.setParameter("firm", settings.getSasUser().getUser().getFirmid());
      }

    } else {
      query =
          DaoUtil.sasQuery(
              findByExample.getSelectClause(),
              settings,
              ShopRoomTarriffCorporateRateView.class,
              em);
    }

    query.setParameter("filter", findByExample.getFilter());
    if (findByExample.getSelectClause().contains("filterForInteger")) {
      query.setParameter("filterForInteger", findByExample.getFilterForInteger());
    }

    return query.setMaxResults(100).getResultList();
  }