blob: 74009fb4fced7ffd44c0a5cee2a9ae4a1482cfed [file] [log] [blame]
/*
* Copyright (c) 2014, 2020 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2015 IBM Corporation.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// 06/25/2014-2.5.2 Rick Curtis
// - 438177: Test M2M map
package org.eclipse.persistence.testing.tests.jpa.relationships;
import java.util.HashMap;
import jakarta.persistence.EntityManager;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.persistence.internal.jpa.EntityManagerImpl;
import org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork;
import org.eclipse.persistence.testing.framework.junit.JUnitTestCase;
import org.eclipse.persistence.testing.models.jpa.relationships.MtoMEntityA;
import org.eclipse.persistence.testing.models.jpa.relationships.MtoMEntityB;
import org.eclipse.persistence.testing.models.jpa.relationships.RelationshipsTableManager;
public class TestKeyTypeToManyRelationship extends JUnitTestCase{
public TestKeyTypeToManyRelationship() {
}
public TestKeyTypeToManyRelationship(String name) {
super(name);
}
public void testSetup () {
new RelationshipsTableManager().replaceTables(JUnitTestCase.getServerSession());
}
public static Test suite() {
TestSuite suite = new TestSuite();
suite.setName("TestKeyTypeToManyRelationship");
suite.addTest(new TestKeyTypeToManyRelationship("testSetup"));
suite.addTest(new TestKeyTypeToManyRelationship("testManyToManyMapTypeWithDefaultKey"));
suite.addTest(new TestKeyTypeToManyRelationship("testManyToManyMapTypeWithDefaultJointTable"));
return suite;
}
public void testManyToManyMapTypeWithDefaultJointTable() throws Exception {
HashMap<String, String> emProps = new HashMap<String, String>();
emProps.put("eclipselink.cache.shared.default", "false");
EntityManager em = createEntityManager(emProps);
beginTransaction(em);
try {
MtoMEntityA entityA = new MtoMEntityA();
entityA.setId(2);
entityA.setName("Entity A");
em.persist(entityA);
MtoMEntityB entityB = new MtoMEntityB();
entityB.setId(2);
entityB.setName("Entity B");
em.persist(entityB);
entityA.getEntityBDefault().put(2, entityB);
commitTransaction(em);
beginTransaction(em);
em.clear();
MtoMEntityA entityA_find = em.find(MtoMEntityA.class, 2);
assertNotSame(entityA, entityA_find);
assertNotNull(entityA_find);
assertNotNull(entityA_find.getEntityBDefault());
assertEquals(1, entityA_find.getEntityBDefault().size());
commitTransaction(em);
} finally {
if (isTransactionActive(em)) {
rollbackTransaction(em);
}
closeEntityManager(em);
}
}
public void testManyToManyMapTypeWithDefaultKey() throws Exception {
HashMap<String, String> emProps = new HashMap<String, String>();
emProps.put("eclipselink.cache.shared.default", "false");
EntityManager em = createEntityManager(emProps);
beginTransaction(em);
try {
MtoMEntityA entityA = new MtoMEntityA();
entityA.setId(1);
entityA.setName("Entity A");
em.persist(entityA);
MtoMEntityB entityB = new MtoMEntityB();
entityB.setId(1);
entityB.setName("Entity B");
em.persist(entityB);
entityA.getEntityB().put(1, entityB);
commitTransaction(em);
beginTransaction(em);
em.clear();
MtoMEntityA entityA_find = em.find(MtoMEntityA.class, 1);
assertNotSame(entityA, entityA_find);
assertNotNull(entityA_find);
assertNotNull(entityA_find.getEntityB());
assertEquals(1, entityA_find.getEntityB().size());
commitTransaction(em);
} finally {
if (isTransactionActive(em)) {
rollbackTransaction(em);
}
closeEntityManager(em);
}
}
}