use of org.hibernate.Query in project hibernate-orm by hibernate.
the class ASTParserLoadingTest method testRowValueConstructorSyntaxInInList.
@Test
public void testRowValueConstructorSyntaxInInList() {
Session s = openSession();
s.beginTransaction();
Product product = new Product();
product.setDescription("My Product");
product.setNumberAvailable(10);
product.setPrice(new BigDecimal(123));
product.setProductId("4321");
s.save(product);
Customer customer = new Customer();
customer.setCustomerId("123456789");
customer.setName("My customer");
customer.setAddress("somewhere");
s.save(customer);
Order order = customer.generateNewOrder(new BigDecimal(1234));
s.save(order);
LineItem li = order.generateLineItem(product, 5);
s.save(li);
product = new Product();
product.setDescription("My Product");
product.setNumberAvailable(10);
product.setPrice(new BigDecimal(123));
product.setProductId("1234");
s.save(product);
li = order.generateLineItem(product, 10);
s.save(li);
s.flush();
Query query = s.createQuery("from LineItem l where l.id in (:idList)");
List<Id> list = new ArrayList<Id>();
list.add(new Id("123456789", order.getId().getOrderNumber(), "4321"));
list.add(new Id("123456789", order.getId().getOrderNumber(), "1234"));
query.setParameterList("idList", list);
assertEquals(2, query.list().size());
query = s.createQuery("from LineItem l where l.id in :idList");
query.setParameterList("idList", list);
assertEquals(2, query.list().size());
s.getTransaction().rollback();
s.close();
}
use of org.hibernate.Query in project hibernate-orm by hibernate.
the class ASTParserLoadingTest method testParameterTypeMismatch.
@Test
@FailureExpected(jiraKey = "unknown")
public void testParameterTypeMismatch() {
Session s = openSession();
s.beginTransaction();
Query query = s.createQuery("from Animal a where a.description = :nonstring").setParameter("nonstring", Integer.valueOf(1));
try {
query.list();
fail("query execution should have failed");
} catch (IllegalArgumentException e) {
assertTyping(TypeMismatchException.class, e.getCause());
} catch (TypeMismatchException tme) {
// expected behavior
}
s.getTransaction().commit();
s.close();
}
use of org.hibernate.Query in project hibernate-orm by hibernate.
the class IdentifierPropertyReferencesTest method testHqlIdPropertyReferences.
@Test
public void testHqlIdPropertyReferences() {
Session s = openSession();
s.beginTransaction();
Person p = new Person(new Long(1), "steve", 123);
s.save(p);
Order o = new Order(new Long(1), p);
LineItem l = new LineItem(o, "my-product", 2);
l.setId("456");
s.save(o);
s.getTransaction().commit();
s.close();
s = openSession();
s.beginTransaction();
long count = extractCount(s, "select count(*) from Person p where p.id = 123");
assertEquals("Person by id prop (non-identifier)", 1, count);
count = extractCount(s, "select count(*) from Person p where p.pk = 1");
assertEquals("Person by pk prop (identifier)", 1, count);
count = extractCount(s, "select count(*) from Order o where o.id = 1");
assertEquals("Order by number prop (named identifier)", 1, count);
count = extractCount(s, "select count(*) from Order o where o.number = 1");
assertEquals("Order by id prop (virtual identifier)", 1, count);
count = extractCount(s, "select count(*) from LineItem l where l.id = '456'");
assertEquals("LineItem by id prop (non-identifier", 1, count);
if (getDialect().supportsRowValueConstructorSyntax()) {
Query q = s.createQuery("select count(*) from LineItem l where l.pk = (:order, :product)").setEntity("order", o).setString("product", "my-product");
count = extractCount(q);
assertEquals("LineItem by pk prop (named composite identifier", 1, count);
}
count = extractCount(s, "select count(*) from Order o where o.orderee.id = 1");
assertEquals(0, count);
count = extractCount(s, "select count(*) from Order o where o.orderee.pk = 1");
assertEquals(1, count);
count = extractCount(s, "select count(*) from Order o where o.orderee.id = 123");
assertEquals(1, count);
count = extractCount(s, "select count(*) from LineItem l where l.pk.order.id = 1");
assertEquals(1, count);
count = extractCount(s, "select count(*) from LineItem l where l.pk.order.number = 1");
assertEquals(1, count);
count = extractCount(s, "select count(*) from LineItem l where l.pk.order.orderee.pk = 1");
assertEquals(1, count);
s.delete(o);
s.delete(p);
s.getTransaction().commit();
s.close();
}
use of org.hibernate.Query in project hibernate-orm by hibernate.
the class CharacterArrayIdTest method testMultipleDeletions.
/**
* Removes two records from database.
*/
@Test
@TestForIssue(jiraKey = "HHH-8999")
public void testMultipleDeletions() {
Session s = openSession();
s.getTransaction().begin();
Query query = s.createQuery("SELECT s FROM CharacterArrayIdTest$DemoEntity s");
List results = query.list();
s.delete(results.get(0));
s.delete(results.get(1));
s.getTransaction().commit();
s.close();
s = openSession();
s.getTransaction().begin();
query = s.createQuery("SELECT s FROM CharacterArrayIdTest$DemoEntity s");
assertEquals(1, query.list().size());
s.getTransaction().commit();
s.close();
}
use of org.hibernate.Query in project hibernate-orm by hibernate.
the class PrimitiveByteArrayIdTest method testMultipleUpdates.
/**
* Updates two records from database.
*/
@Test
@TestForIssue(jiraKey = "HHH-8999")
public void testMultipleUpdates() {
Session s = openSession();
s.getTransaction().begin();
Query query = s.createQuery("SELECT s FROM PrimitiveByteArrayIdTest$DemoEntity s");
List<DemoEntity> results = (List<DemoEntity>) query.list();
results.get(0).name = "Different 0";
results.get(1).name = "Different 1";
final String lastResultName = results.get(0).name;
s.getTransaction().commit();
s.close();
s = openSession();
s.getTransaction().begin();
query = s.createQuery("SELECT s FROM PrimitiveByteArrayIdTest$DemoEntity s");
results = (List<DemoEntity>) query.list();
final Set<String> names = new HashSet<String>();
for (DemoEntity entity : results) {
names.add(entity.name);
}
assertTrue(names.contains("Different 0"));
assertTrue(names.contains("Different 1"));
assertTrue(names.contains(lastResultName));
s.getTransaction().commit();
s.close();
}
Aggregations