#set( $symbol_pound = '#' ) #set( $symbol_dollar = '$' ) #set( $symbol_escape = '\' ) package ${package}.unit.dao; import java.util.Map; import javax.sql.DataSource; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.persister.entity.EntityPersister; import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springside.modules.test.spring.SpringTxTestCase; import org.springside.modules.test.utils.DbUnitUtils; /** * 简单测试所有Entity类的O/R Mapping. * * @author calvin */ @ContextConfiguration(locations = { "/applicationContext-test.xml" }) public class HibernateMappingTest extends SpringTxTestCase { private static Logger logger = LoggerFactory.getLogger(HibernateMappingTest.class); private static DataSource dataSourceHolder = null; @Autowired private SessionFactory sessionFactory; @Before public void loadDefaultData() throws Exception { if (dataSourceHolder == null) { DbUnitUtils.loadData(dataSource, "/data/default-data.xml"); dataSourceHolder = dataSource; } } @AfterClass public static void cleanDefaultData() throws Exception { DbUnitUtils.removeData(dataSourceHolder, "/data/default-data.xml"); } @Test @SuppressWarnings("unchecked") public void allClassMapping() throws Exception { Session session = sessionFactory.openSession(); try { Map metadata = sessionFactory.getAllClassMetadata(); for (Object o : metadata.values()) { EntityPersister persister = (EntityPersister) o; String className = persister.getEntityName(); Query q = session.createQuery("from " + className + " c"); q.iterate(); logger.debug("ok: " + className); } } finally { session.close(); } } }