package com.alibaba.json.demo.hibernate;
import com.alibaba.fastjson.JSON;
import com.alibaba.json.demo.hibernate.data.*;
import junit.framework.TestCase;
import org.hibernate.Hibernate;
import org.junit.Test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import java.util.Map;
import java.util.Set;
public class ForceLazyLoadingTest extends TestCase {
EntityManagerFactory emf;
protected void setUp() throws Exception {
emf = Persistence.createEntityManagerFactory("persistenceUnit");
}
protected void tearDown() throws Exception {
if (emf != null) {
emf.close();
}
}
public void testGetCustomerJson() throws Exception {
EntityManager em = emf.createEntityManager();
// false -> no forcing of lazy loading
Customer customer = em.find(Customer.class, 103);
assertFalse(Hibernate.isInitialized(customer.getPayments()));
String json = JSON.toJSONString(customer);
System.out.println(json);
// should force loading...
// Set<Payment> payments = customer.getPayments();
// /*
// System.out.println("--- JSON ---");
// System.out.println(json);
// System.out.println("--- /JSON ---");
// */
//
// assertTrue(Hibernate.isInitialized(payments));
// // TODO: verify
// assertNotNull(json);
//
// Map<?,?> stuff = mapper.readValue(json, Map.class);
//
// assertTrue(stuff.containsKey("payments"));
// assertTrue(stuff.containsKey("orders"));
// assertNull(stuff.get("orderes"));
}
}