use of org.hibernate.testing.FailureExpected in project hibernate-orm by hibernate.
the class PersistentSetTest method testCompositeElementMerging.
@Test
@FailureExpected(jiraKey = "HHH-2485")
public void testCompositeElementMerging() {
Session session = openSession();
session.beginTransaction();
Container container = new Container("p1");
Container.Content c1 = new Container.Content("c1");
container.getContents().add(c1);
session.save(container);
session.getTransaction().commit();
session.close();
CollectionStatistics stats = sessionFactory().getStatistics().getCollectionStatistics(Container.class.getName() + ".contents");
long recreateCount = stats.getRecreateCount();
long updateCount = stats.getUpdateCount();
container.setName("another name");
session = openSession();
session.beginTransaction();
container = (Container) session.merge(container);
session.getTransaction().commit();
session.close();
assertEquals(1, container.getContents().size());
assertEquals(recreateCount, stats.getRecreateCount());
assertEquals(updateCount, stats.getUpdateCount());
session = openSession();
session.beginTransaction();
container = (Container) session.get(Container.class, container.getId());
assertEquals(1, container.getContents().size());
session.delete(container);
session.getTransaction().commit();
session.close();
}
use of org.hibernate.testing.FailureExpected in project hibernate-orm by hibernate.
the class PersistentSetTest method testCompositeElementCollectionDirtyChecking.
@Test
@FailureExpected(jiraKey = "HHH-2485")
public void testCompositeElementCollectionDirtyChecking() {
Session session = openSession();
session.beginTransaction();
Container container = new Container("p1");
Container.Content c1 = new Container.Content("c1");
container.getContents().add(c1);
session.save(container);
session.getTransaction().commit();
session.close();
CollectionStatistics stats = sessionFactory().getStatistics().getCollectionStatistics(Container.class.getName() + ".contents");
long recreateCount = stats.getRecreateCount();
long updateCount = stats.getUpdateCount();
session = openSession();
session.beginTransaction();
container = (Container) session.get(Container.class, container.getId());
assertEquals(1, container.getContents().size());
session.getTransaction().commit();
session.close();
assertEquals(1, container.getContents().size());
assertEquals(recreateCount, stats.getRecreateCount());
assertEquals(updateCount, stats.getUpdateCount());
session = openSession();
session.beginTransaction();
container = (Container) session.get(Container.class, container.getId());
assertEquals(1, container.getContents().size());
session.delete(container);
session.getTransaction().commit();
session.close();
}
use of org.hibernate.testing.FailureExpected in project hibernate-orm by hibernate.
the class RemoveOrderingTest method testManyToOne.
@Test
@TestForIssue(jiraKey = "HHH-8550")
@FailureExpected(jiraKey = "HHH-8550")
public void testManyToOne() throws Exception {
Session session = openSession();
session.beginTransaction();
try {
Company company = new Company(1, "acme");
Person person = new Person(1, "joe", company);
session.persist(person);
session.flush();
company = person.employer;
session.delete(company);
session.delete(person);
session.flush();
session.persist(person);
session.flush();
session.getTransaction().commit();
} catch (Exception e) {
session.getTransaction().rollback();
throw e;
}
session.close();
}
use of org.hibernate.testing.FailureExpected in project hibernate-orm by hibernate.
the class MergeMultipleEntityCopiesAllowedTest method testNestedUnidirOneToManyBackrefWithNewElement.
@Test
@FailureExpected(jiraKey = "HHH-9239")
public void testNestedUnidirOneToManyBackrefWithNewElement() {
Item item1 = new Item();
item1.setName("item1 name");
SubItem subItem1 = new SubItem();
subItem1.setName("subItem1 name");
item1.getSubItemsBackref().add(subItem1);
Session s = openSession();
Transaction tx = s.beginTransaction();
s.persist(item1);
tx.commit();
s.close();
// get another representation of item1
s = openSession();
tx = s.beginTransaction();
Item item1_1 = (Item) s.get(Item.class, item1.getId());
Hibernate.initialize(item1_1.getSubItemsBackref());
tx.commit();
s.close();
Category category = new Category();
category.setName("category");
item1.setCategory(category);
SubItem subItem2 = new SubItem();
subItem2.setName("subItem2 name");
item1_1.getSubItemsBackref().add(subItem2);
category.setExampleItem(item1_1);
s = openSession();
tx = s.beginTransaction();
Item item1Merged = (Item) s.merge(item1);
// The resulting collection should contain the added element
assertEquals(2, item1Merged.getSubItemsBackref().size());
assertEquals("subItem1 name", item1Merged.getSubItemsBackref().get(0).getName());
assertEquals("subItem2 name", item1Merged.getSubItemsBackref().get(1).getName());
tx.commit();
s.close();
s = openSession();
tx = s.beginTransaction();
item1 = (Item) s.get(Item.class, item1.getId());
assertEquals(2, item1.getSubItemsBackref().size());
assertEquals("subItem1 name", item1.getSubItemsBackref().get(0).getName());
assertEquals("subItem2 name", item1Merged.getSubItemsBackref().get(1).getName());
tx.commit();
s.close();
cleanup();
}
use of org.hibernate.testing.FailureExpected in project hibernate-orm by hibernate.
the class MergeMultipleEntityCopiesAllowedOrphanDeleteTest method testNestedUnidirOneToManyBackrefWithRemovedElement.
@Test
@FailureExpected(jiraKey = "HHH-9239")
public void testNestedUnidirOneToManyBackrefWithRemovedElement() {
Item item1 = new Item();
item1.setName("item1 name");
SubItem subItem1 = new SubItem();
subItem1.setName("subItem1 name");
item1.getSubItemsBackref().add(subItem1);
SubItem subItem2 = new SubItem();
subItem2.setName("subItem2 name");
item1.getSubItemsBackref().add(subItem2);
Session s = openSession();
Transaction tx = s.beginTransaction();
s.persist(item1);
tx.commit();
s.close();
// get another representation of item1
s = openSession();
tx = s.beginTransaction();
Item item1_1 = (Item) s.get(Item.class, item1.getId());
Hibernate.initialize(item1_1.getSubItemsBackref());
tx.commit();
s.close();
// remove subItem1 from the nested Item
item1_1.getSubItemsBackref().remove(subItem1);
Category category = new Category();
category.setName("category");
item1.setCategory(category);
category.setExampleItem(item1_1);
s = openSession();
tx = s.beginTransaction();
Item item1Merged = (Item) s.merge(item1);
// the element should have been removed
assertEquals(1, item1Merged.getSubItemsBackref().size());
assertTrue(item1Merged.getSubItemsBackref().contains(subItem2));
tx.commit();
s.close();
s = openSession();
tx = s.beginTransaction();
item1 = (Item) s.get(Item.class, item1.getId());
assertEquals(1, item1.getSubItemsBackref().size());
assertTrue(item1.getSubItemsBackref().contains(subItem2));
// because cascade includes "delete-orphan" the removed SubItem should have been deleted.
subItem1 = (SubItem) s.get(SubItem.class, subItem1.getId());
assertNull(subItem1);
tx.commit();
s.close();
cleanup();
}
Aggregations