/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.common.query.jpa;
import java.io.IOException;
import java.sql.Date;
import java.util.Calendar;
import java.util.List;
import javax.persistence.EntityManagerFactory;
import javax.persistence.TemporalType;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
/**
*
* @author wangwei
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:com/ewcms/common/query/applicationContext.xml"})
@TransactionConfiguration(transactionManager = "txManager", defaultRollback = false)
@Transactional
public class HqlQueryTemplateTest {
@Autowired
EntityManagerFactory entityManagerFactory;
@Autowired
private QueryInit entityQueryInit;
@Before
public void before()throws IOException{
entityQueryInit.initDatabase();
}
@Test
public void testSetParameter() {
String hql = "From Certificate o Where o.id =:id";
HqlQueryTemplate template = new HqlQueryTemplate(entityManagerFactory.createEntityManager(),hql);
template.setParameter("id", "72300125");
List<Object> list = template.getResultList();
Assert.assertEquals(1, list.size());
}
@Test
public void testSetParameterPosition() {
String hql = "From Certificate o Where o.id =?1";
HqlQueryTemplate template = new HqlQueryTemplate(entityManagerFactory.createEntityManager(),hql);
template.setParameter(1, "72300125");
List<Object> list = template.getResultList();
Assert.assertEquals(1, list.size());
}
@Test
public void testSetParameterDate() {
String hql = "From Certificate o Where o.brithdate > :date";
HqlQueryTemplate template = new HqlQueryTemplate(entityManagerFactory.createEntityManager(),hql);
Calendar calendar = Calendar.getInstance();
calendar.set(1975, 0, 1);
template.setParameter("date", new Date(calendar.getTimeInMillis()), TemporalType.DATE);
List<Object> list = template.getResultList();
Assert.assertEquals(13, list.size());
}
@Test
public void testSetParameterDatePosition() {
String hql = "From Certificate o Where o.brithdate > ?1";
HqlQueryTemplate template = new HqlQueryTemplate(entityManagerFactory.createEntityManager(),hql);
Calendar calendar = Calendar.getInstance();
calendar.set(1975, 0, 1);
template.setParameter(1, new Date(calendar.getTimeInMillis()), TemporalType.DATE);
List<Object> list = template.getResultList();
Assert.assertEquals(13, list.size());
}
@Test
public void testStartPosition(){
String hql = "From Certificate o";
HqlQueryTemplate template = new HqlQueryTemplate(entityManagerFactory.createEntityManager(),hql);
template.setFirstResult(100);
List<Object> list = template.getResultList();
Assert.assertTrue(list.size() == 60);
}
@Test
public void testMaxResults(){
String hql = "From Certificate o";
HqlQueryTemplate template = new HqlQueryTemplate(entityManagerFactory.createEntityManager(),hql);
template.setMaxResults(20);
List<Object> list = template.getResultList();
Assert.assertEquals(20, list.size());
}
@Test
public void testStartPositionAndMaxResults(){
String hql = "From Certificate o";
HqlQueryTemplate template = new HqlQueryTemplate(entityManagerFactory.createEntityManager(),hql);
List<Object> list = template
.setFirstResult(150)
.setMaxResults(20)
.getResultList();
Assert.assertTrue(list.size() == 10);
}
}