blob: 73c958dc71ddc013283a27a96129c27462046cf6 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.openjpa.persistence.relations;
import java.util.Collection;
import javax.persistence.EntityManager;
import org.apache.openjpa.persistence.test.SingleEMFTestCase;
import junit.textui.TestRunner;
/**
* Test Multi-OneToMany relationship with different fetch types.
*/
public class TestOneToManyWithEagerLazyFetch extends SingleEMFTestCase {
final int TestUtil1xm_TestRow_Id = 100;
@Override
public void setUp() {
setUp(Util1xmLf.class, Util1xmRt.class);
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
// Initialize Util1xmLf entity
Util1xmLf lf1xm = new Util1xmLf();
lf1xm.setId(TestUtil1xm_TestRow_Id);
lf1xm.setFirstName("loaded firstName");
Util1xmRt rt1xm1 = new Util1xmRt();
rt1xm1.setId(TestUtil1xm_TestRow_Id + 11);
rt1xm1.setLastName("loaded lastName1");
lf1xm.addUniRightLzy(rt1xm1);
Util1xmRt rt1xm2 = new Util1xmRt();
rt1xm2.setId(TestUtil1xm_TestRow_Id + 12);
rt1xm2.setLastName("loaded lastName2");
lf1xm.addUniRightLzy(rt1xm2);
Util1xmRt rt1xm3 = new Util1xmRt();
rt1xm3.setId(TestUtil1xm_TestRow_Id + 21);
rt1xm3.setLastName("loaded eager lastName3");
lf1xm.addUniRightEgr(rt1xm3);
Util1xmRt rt1xm4 = new Util1xmRt();
rt1xm4.setId(TestUtil1xm_TestRow_Id + 22);
rt1xm4.setLastName("loaded eager lastName4");
lf1xm.addUniRightEgr(rt1xm4);
em.persist(rt1xm1);
em.persist(rt1xm2);
em.persist(rt1xm3);
em.persist(rt1xm4);
em.persist(lf1xm);
em.getTransaction().commit();
em.close();
}
public void testLoadedOneToManyCount() {
EntityManager em = emf.createEntityManager();
Util1xmLf e1 = em.find(Util1xmLf.class, TestUtil1xm_TestRow_Id);
// SELECT t0.firstName, t1.UTIL1XMLF_ID, t2.id, t2.lastName FROM Util1xmLf t0
// LEFT OUTER JOIN Util1xmLf_Util1xmRt t1 ON t0.id = t1.UTIL1XMLF_ID
// LEFT OUTER JOIN Util1xmRt t2 ON t1.UNIRIGHTEGR_ID = t2.id WHERE t0.id = ?
// [params=(int) 100]
assertNotNull("Found Util1xmLf(id=" + TestUtil1xm_TestRow_Id + ")", e1);
Collection<Util1xmRt> eRs = e1.getUniRightLzy();
// SELECT t1.id, t1.lastName FROM Util1xmLf_Util1xmRt t0
// INNER JOIN Util1xmRt t1 ON t0.UNIRIGHTLZY_ID = t1.id WHERE t0.UTIL1XMLF_ID = ?
// [params=(int) 100]
assertNotNull("Util1xmRt uniRightLzy != null", eRs);
assertEquals("Util1xmRt uniRightLzy.size == 2", eRs.size(), 2);
Collection<Util1xmRt> eEs = e1.getUniRightEgr();
assertNotNull("Util1xmRt uniRightEgr != null", eEs);
// Failing test: Getting 3 in eager collection, one null entry
assertEquals("Util1xmRt uniRightEgr.size == 2", eEs.size(), 2);
em.close();
}
public static void main(String[] args) {
TestRunner.run(TestOneToManyWithEagerLazyFetch.class);
}
}