mirror of https://github.com/apache/openjpa.git
OPENJPA-733: Updated state manager to use actual oid instead of owner oid.
git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@700563 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0226888590
commit
ab42492100
File diff suppressed because it is too large
Load Diff
|
@ -18,7 +18,11 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.openjpa.persistence.embed;
|
package org.apache.openjpa.persistence.embed;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import javax.persistence.EntityManager;
|
import javax.persistence.EntityManager;
|
||||||
|
import javax.persistence.EntityTransaction;
|
||||||
|
|
||||||
import org.apache.openjpa.persistence.test.SingleEMFTestCase;
|
import org.apache.openjpa.persistence.test.SingleEMFTestCase;
|
||||||
|
|
||||||
public class TestEmbedded extends SingleEMFTestCase {
|
public class TestEmbedded extends SingleEMFTestCase {
|
||||||
|
@ -42,5 +46,71 @@ public class TestEmbedded extends SingleEMFTestCase {
|
||||||
em.persist(a);
|
em.persist(a);
|
||||||
em.getTransaction().commit();
|
em.getTransaction().commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This variation verifies that an embedded entity can be accessed after
|
||||||
|
* being detached. An entity /w embedded is persisted and then queried.
|
||||||
|
* The em is closed, detaching the entities, and then a getter is called
|
||||||
|
* on the embeddeded. If the embedded is still attached (it should not be)
|
||||||
|
* an IllegalStateException will be thrown.
|
||||||
|
*
|
||||||
|
* JIRA Ref: OPENJPA-733
|
||||||
|
* Authors: Chris Tillman, Jeremy Bauer
|
||||||
|
*/
|
||||||
|
public void testDetachedQueryEmbedded() {
|
||||||
|
Address a = new Address();
|
||||||
|
a.setStreetAddress("456 Main St");
|
||||||
|
a.setCity("New York");
|
||||||
|
a.setState("NY");
|
||||||
|
a.setZip(12955);
|
||||||
|
Geocode g = new Geocode();
|
||||||
|
g.setLatitude(1.0f);
|
||||||
|
g.setLongtitude(2.0f);
|
||||||
|
a.setGeocode(g);
|
||||||
|
|
||||||
|
persistAddress(a);
|
||||||
|
|
||||||
|
Address a2 = queryAddresses(
|
||||||
|
"select address from Address address" +
|
||||||
|
" where address.streetAddress = '456 Main St'").get(0);
|
||||||
|
|
||||||
|
assertEquals(a2.getGeocode().getLatitude(),1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
private void persistAddress(Address address) {
|
||||||
|
final EntityManager em = emf.createEntityManager();
|
||||||
|
final EntityTransaction tx = em.getTransaction();
|
||||||
|
|
||||||
|
tx.begin();
|
||||||
|
|
||||||
|
try {
|
||||||
|
em.persist(address);
|
||||||
|
tx.commit();
|
||||||
|
} finally {
|
||||||
|
if (tx.isActive()) {
|
||||||
|
tx.rollback();
|
||||||
|
}
|
||||||
|
em.close();
|
||||||
|
}
|
||||||
|
assertEquals(address.getGeocode().getLatitude(),1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Address> queryAddresses(String query) {
|
||||||
|
final EntityManager em = emf.createEntityManager();
|
||||||
|
final EntityTransaction tx = em.getTransaction();
|
||||||
|
|
||||||
|
tx.begin();
|
||||||
|
|
||||||
|
try {
|
||||||
|
final List<Address> list = (List<Address>) em.createQuery(query)
|
||||||
|
.getResultList();
|
||||||
|
tx.commit();
|
||||||
|
return list;
|
||||||
|
} finally {
|
||||||
|
if (tx.isActive()) {
|
||||||
|
tx.rollback();
|
||||||
|
}
|
||||||
|
em.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue