/** * Метод для выполнения запроса на поиск данных с выполнением всех необходимых операций, таких как * создание 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()); }
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)); }
@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()); }