content: package com.alibaba.json.demo.hibernate;
  
  import java.util.*;
  
  import javax.persistence.EntityManager;
  import javax.persistence.EntityManagerFactory;
  import javax.persistence.Persistence;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.json.demo.hibernate.data.*;
  
  import junit.framework.TestCase;
  
  public class LazyLoadingTest 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
              //ObjectMapper mapper = mapperWithModule(false);
              
              Customer customer = em.find(Customer.class, 103);
              // assertFalse(Hibernate.isInitialized(customer.getPayments()));
              String json = JSON.toJSONString(customer);
          System.out.println(json);
              // should not force loading...
              Set<Payment> payments = customer.getPayments();
              /*
              System.out.println("--- JSON ---");
              System.out.println(json);
              System.out.println("--- /JSON ---");
              */
  
              //assertFalse(Hibernate.isInitialized(payments));
              // TODO: verify
              assertNotNull(json);
              
  //            Map<?,?> stuff = mapper.readValue(json, Map.class);
  //
  //            // "payments" is marked as lazily loaded AND "Include.NON_EMPTY"; should not be serialized
  //            if (stuff.containsKey("payments")) {
  //                fail("Should not find serialized property 'payments'; got: "+stuff.get("payments")
  //                        +" from JSON: "+json);
  //            }
  //            // orders, on the other hand, not:
  //            assertTrue(stuff.containsKey("orders"));
  //            assertNull(stuff.get("orderes"));
  
      }
      
  //    @Test
  //    public void testSerializeIdentifierFeature() throws JsonProcessingException {
  //		Hibernate5Module module = new Hibernate5Module();
  //		module.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS);
  //		ObjectMapper objectMapper = new ObjectMapper().registerModule(module);
  //
  //		EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit");
  //    	try {
  //    		EntityManager em = emf.createEntityManager();
  //    		Customer customerRef = em.getReference(Customer.class, 103);
  //    		em.close();
  //    		assertFalse(Hibernate.isInitialized(customerRef));
  //
  //			String json = objectMapper.writeValueAsString(customerRef);
  //			assertFalse(Hibernate.isInitialized(customerRef));
  //			assertEquals("{\"customerNumber\":103}", json);
  //    	} finally {
  //    		emf.close();
  //    	}
  //    }
  }
  