Search in sources :

Example 46 with FailureExpected

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();
}
Also used : Session(org.hibernate.Session) CollectionStatistics(org.hibernate.stat.CollectionStatistics) Test(org.junit.Test) FailureExpected(org.hibernate.testing.FailureExpected)

Example 47 with FailureExpected

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();
}
Also used : Session(org.hibernate.Session) CollectionStatistics(org.hibernate.stat.CollectionStatistics) Test(org.junit.Test) FailureExpected(org.hibernate.testing.FailureExpected)

Example 48 with FailureExpected

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();
}
Also used : Session(org.hibernate.Session) Test(org.junit.Test) FailureExpected(org.hibernate.testing.FailureExpected) TestForIssue(org.hibernate.testing.TestForIssue)

Example 49 with FailureExpected

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();
}
Also used : Transaction(org.hibernate.Transaction) Session(org.hibernate.Session) Test(org.junit.Test) FailureExpected(org.hibernate.testing.FailureExpected)

Example 50 with FailureExpected

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();
}
Also used : Transaction(org.hibernate.Transaction) Session(org.hibernate.Session) Test(org.junit.Test) FailureExpected(org.hibernate.testing.FailureExpected)

Aggregations

FailureExpected (org.hibernate.testing.FailureExpected)59 Test (org.junit.Test)58 Session (org.hibernate.Session)39 Transaction (org.hibernate.Transaction)23 TestForIssue (org.hibernate.testing.TestForIssue)14 EntityManager (javax.persistence.EntityManager)12 List (java.util.List)7 ArrayList (java.util.ArrayList)4 Date (java.util.Date)3 MetadataSources (org.hibernate.boot.MetadataSources)3 RequiresDialect (org.hibernate.testing.RequiresDialect)3 Connection (java.sql.Connection)2 ResultSet (java.sql.ResultSet)2 Statement (java.sql.Statement)2 Collection (java.util.Collection)2 HashMap (java.util.HashMap)2 Callable (java.util.concurrent.Callable)2 CountDownLatch (java.util.concurrent.CountDownLatch)2 EntityManagerFactory (javax.persistence.EntityManagerFactory)2 Query (javax.persistence.Query)2