package org.raidenjpa.merge;
import static org.junit.Assert.assertEquals;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import org.junit.Test;
import org.raidenjpa.AbstractTestCase;
import org.raidenjpa.entities.A;
import org.raidenjpa.entities.B;
import org.raidenjpa.entities.C;
import org.raidenjpa.util.EntityManagerUtil;
import org.raidenjpa.util.FixMe;
public class MergeTest extends AbstractTestCase {
@Test
public void testSimpleTx() {
A a = new A("a1", 1);
B b = new B("b");
C c = new C("c");
EntityManager em = EntityManagerUtil.em();
EntityTransaction tx = em.getTransaction();
tx.begin();
a = em.merge(a);
b = em.merge(b);
c = em.merge(c);
a.setB(b);
b.setC(c);
tx.commit();
em.close();
em = EntityManagerUtil.em();
a = em.find(A.class, a.getId());
assertEquals(a.getStringValue(), "a1");
assertEquals(a.getB().getValue(), "b");
assertEquals(a.getB().getC().getValue(), "c");
em.close();
}
@Test
public void testMergeAllEntitiesInvolved() {
createAwithItens("a1", 3);
EntityManager em = EntityManagerUtil.em();
assertEquals(1, em.createQuery("FROM A a").getResultList().size());
assertEquals(3, em.createQuery("FROM ItemA i").getResultList().size());
}
@FixMe("Implement it")
@Test
public void testMergeMoreThanOneLevel() {
}
}