예제 #1
0
  /**
   * Метод для выполнения запроса на поиск данных с выполнением всех необходимых операций, таких как
   * создание EntityManager, открытие транзакции, выполнение commit или roll back.
   *
   * <p>Метод задает параметры для запроса из списка начиная с 1. Первый параметр в запросе будет
   * <code>?1</code>, второй <code>?2</code> и т.д.
   *
   * <p>Если параметр <code>singleResult = true</code> и результатов не найдено, то будет возвращено
   * null.
   *
   * @param <REZ> Класс результата
   * @param queryOrQueryName строка запроса или название NamedQuery
   * @param namedQuery тип запроса (NamedQuery если true, обычный запрос если false)
   * @param singleResult возвращать один результат
   * @param parameters параметры через запятую (будут использоваться в запросе)
   * @return результат выполнения запроса
   * @throws IllegalArgumentException нет запроса
   */
  @SuppressWarnings("unchecked")
  @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
  protected <REZ> REZ executeQuery(
      String queryOrQueryName, boolean namedQuery, boolean singleResult, Object... parameters) {

    if (null == queryOrQueryName || queryOrQueryName.isEmpty()) {
      throw new IllegalArgumentException("Query for executing cannot be empty");
    }

    REZ result;
    List<?> list;

    if (namedQuery) {
      list = jpaTemplate.findByNamedQuery(queryOrQueryName, parameters);
    } else {
      list = jpaTemplate.find(queryOrQueryName, parameters);
    }

    if (singleResult) {
      if (!list.isEmpty()) {
        result = (REZ) list.get(0);
      } else {
        result = null;
      }
    } else {
      result = (REZ) list;
    }

    return result;
  }
  @Test
  public void produceNewEntity() throws Exception {
    setUp("jpa://" + Customer.class.getName() + "?usePersist=" + (usePersist() ? "true" : "false"));

    Customer customer = createDefaultCustomer();
    Exchange exchange = new DefaultExchange(camelContext);
    exchange.getIn().setBody(customer);
    Exchange returnedExchange = template.send(endpoint, exchange);

    Customer receivedCustomer = returnedExchange.getIn().getBody(Customer.class);
    assertEquals(customer.getName(), receivedCustomer.getName());
    assertNotNull(receivedCustomer.getId());
    assertEquals(
        customer.getAddress().getAddressLine1(), receivedCustomer.getAddress().getAddressLine1());
    assertEquals(
        customer.getAddress().getAddressLine2(), receivedCustomer.getAddress().getAddressLine2());
    assertNotNull(receivedCustomer.getAddress().getId());

    List results = jpaTemplate.find("select o from " + Customer.class.getName() + " o");
    assertEquals(1, results.size());
    Customer persistedCustomer = (Customer) results.get(0);
    assertEquals(receivedCustomer.getName(), persistedCustomer.getName());
    assertEquals(receivedCustomer.getId(), persistedCustomer.getId());
    assertEquals(
        receivedCustomer.getAddress().getAddressLine1(),
        persistedCustomer.getAddress().getAddressLine1());
    assertEquals(
        receivedCustomer.getAddress().getAddressLine2(),
        persistedCustomer.getAddress().getAddressLine2());
    assertEquals(receivedCustomer.getAddress().getId(), persistedCustomer.getAddress().getId());
  }
예제 #3
0
  private void assertEntityInDB() throws Exception {
    jpaTemplate = (JpaTemplate) applicationContext.getBean("jpaTemplate", JpaTemplate.class);

    List list = jpaTemplate.find(SELECT_ALL_STRING);
    assertEquals(1, list.size());

    assertIsInstanceOf(SendEmail.class, list.get(0));
  }
예제 #4
0
  @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
  public T getEntityById(Long id) throws IllegalArgumentException {
    if (id == null) {
      throw new IllegalArgumentException("Id for finding entity should not be null");
    }

    try {
      T savedEntity = jpaTemplate.find(persistentClass, id);
      if ((savedEntity == null) || (savedEntity.getId() == null)) {
        return null;
      }
      return (T) savedEntity;
    } catch (Exception e) {
      return null;
    }
  }
 protected void assertEntitiesInDatabase(int count, String entity) {
   List results = jpaTemplate.find("select o from " + entity + " o");
   assertEquals(count, results.size());
 }