content: 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"));
  
      }
  }
  