use of javax.persistence.EntityManager in project hibernate-orm by hibernate.
the class ManipulationCriteriaTest method testDeleteWithUnCorrelatedSubquery.
@Test
// MySQL does not allow "delete/update from" and subqueries to use the same table
@SkipForDialect(MySQLDialect.class)
public void testDeleteWithUnCorrelatedSubquery() {
CriteriaBuilder builder = entityManagerFactory().getCriteriaBuilder();
EntityManager em = getOrCreateEntityManager();
em.getTransaction().begin();
// attempt to delete Customers who's age is less than the AVG age
CriteriaDelete<Customer> criteria = builder.createCriteriaDelete(Customer.class);
Root<Customer> customerRoot = criteria.from(Customer.class);
Subquery<Double> subCriteria = criteria.subquery(Double.class);
Root<Customer> subQueryCustomerRoot = subCriteria.from(Customer.class);
subCriteria.select(builder.avg(subQueryCustomerRoot.get(Customer_.age)));
// also illustrates the new capability to use the subquery selection as an expression!
criteria.where(builder.lessThan(customerRoot.get(Customer_.age), subCriteria.getSelection().as(Integer.class)));
// make sure Subquery#getParent fails...
try {
subCriteria.getParent();
fail("Expecting Subquery.getParent call to fail on DELETE containing criteria");
} catch (IllegalStateException expected) {
}
Query query = em.createQuery(criteria);
try {
// first, make sure an attempt to list fails
query.getResultList();
fail("Attempt to getResultList() on delete criteria should have failed");
} catch (IllegalStateException expected) {
}
query.executeUpdate();
em.getTransaction().commit();
em.close();
}
use of javax.persistence.EntityManager in project hibernate-orm by hibernate.
the class OnKeywordTest method basicTest.
@Test
public void basicTest() {
EntityManager em = getOrCreateEntityManager();
CriteriaQuery<Order> criteria = em.getCriteriaBuilder().createQuery(Order.class);
Root<Order> root = criteria.from(Order.class);
criteria.select(root);
CollectionJoin<Order, LineItem> lineItemsJoin = root.join(Order_.lineItems);
lineItemsJoin.on(em.getCriteriaBuilder().gt(lineItemsJoin.get(LineItem_.quantity), em.getCriteriaBuilder().literal(20)));
em.createQuery(criteria).getResultList();
em.close();
}
use of javax.persistence.EntityManager in project hibernate-orm by hibernate.
the class BasicCdiTest method testIt.
@Test
@SuppressWarnings("unchecked")
public void testIt() throws Exception {
count = 0;
utx.begin();
EntityManager em = emf.createEntityManager();
em.persist(new MyEntity(1));
utx.commit();
assertEquals(1, count);
utx.begin();
em = emf.createEntityManager();
MyEntity it = em.find(MyEntity.class, 1);
assertNotNull(it);
em.remove(it);
utx.commit();
}
use of javax.persistence.EntityManager in project hibernate-orm by hibernate.
the class PostLoadTest method testAccessAssociatedSetInPostLoad.
/**
* Load an entity with a collection of associated entities, that uses a @PostLoad method to
* access the association.
*/
@Test
public void testAccessAssociatedSetInPostLoad() {
Child child = new Child();
child.setId(1);
Parent daddy = new Parent();
daddy.setId(1);
child.setDaddy(daddy);
Set<Child> children = new HashSet<Child>();
children.add(child);
daddy.setChildren(children);
EntityManager em = getOrCreateEntityManager();
em.getTransaction().begin();
em.persist(daddy);
em.getTransaction().commit();
em.clear();
daddy = em.find(Parent.class, 1);
assertEquals(1, daddy.getNrOfChildren());
}
use of javax.persistence.EntityManager in project hibernate-orm by hibernate.
the class TestConnectionPool method testConnectionPoolDoesNotConsumeAllConnections.
@Test
public void testConnectionPoolDoesNotConsumeAllConnections() {
for (int i = 0; i < CONNECTION_POOL_SIZE + 1; ++i) {
EntityManager entityManager = getOrCreateEntityManager();
try {
for (int j = 0; j < 2; j++) {
try {
final CriteriaBuilder builder = entityManager.getCriteriaBuilder();
final CriteriaQuery<TestEntity> criteriaQuery = builder.createQuery(TestEntity.class);
criteriaQuery.select(criteriaQuery.from(TestEntity.class));
entityManager.createQuery(criteriaQuery).getResultList();
} catch (PersistenceException e) {
if (e.getCause() instanceof SQLGrammarException) {
//expected, the schema was not created
} else {
throw e;
}
}
}
} finally {
entityManager.close();
}
}
}
Aggregations