public class DrawDao extends HibernateDaoSupport {
/**
* 添加領用申請
*
* @param draw
* 領用申請信息(不可為null)
* @return
*/
@SuppressWarnings("unchecked")
public boolean insertDraw(Carddrawapply draw, List<Carddrawapplydetail> drawdetailList) {
boolean flag = false;
Session session = null;
Transaction tx = null;
try {
session = this.getSession();
tx = session.beginTransaction();
long shopid = MyConstant.HTDZ_DEFAULT_SHOPID;//商家ID
String billtype = CardConstant.CARD_LY_ID;//業務編號
String engshort = MyConstant.HTDZ_STR;//商家英文簡稱
String busishort = CardConstant.CARD_LY_CODE;//業務英文簡稱
String formcode = CardCode.getFormCode(session,shopid,billtype,engshort,busishort);
if(!"".equals(formcode)){
draw.setCarddrawapplycode(formcode);
draw.setSourcetype("0");
draw.setApplydate(MyFormat.getToday());
draw.setStatus(StatusUtil.CARDDRAWAPPLY_STATUS01);
session.save(draw);
long carddrawapplyid = draw.getCarddrawapplyid();
session.flush();
if(drawdetailList.size()==0){
tx.rollback();
}else{
for(Carddrawapplydetail drawdetail : drawdetailList){
if(drawdetail!=null){
drawdetail.setCarddrawapplyid(carddrawapplyid);
session.save(drawdetail);
}
}
tx.commit();
flag = true;
}
}
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
flag = false;
} finally {
session.close();
}
return flag;
}
}
以上Dao的方法已經正常。
對此方法的測試,我是在后期補上的。但是居然報錯。幫我看看:
Junit4:(不用繼承TestCase)
public class TestDrawDao{
private DrawDao drawDao;
@Before
public void setUp(){
drawDao = new DrawDao();
}
/**
* 測試'卡領用申請信息的添加'
*/
@Test
public void testInsertDraw(){
Carddrawapply draw = new Carddrawapply();
draw.setApplyoperid(1);
draw.setApplydesc("申請說明");
List<Carddrawapplydetail> drawdetailList = new ArrayList<Carddrawapplydetail>();
//IC卡,100元面值的100張
Carddrawapplydetail drawdetail1 = new Carddrawapplydetail();
drawdetail1.setCardtype("1");
drawdetail1.setParvalue(100);
drawdetail1.setAmount(100);
//充值卡,50元面值的50張
Carddrawapplydetail drawdetail2 = new Carddrawapplydetail();
drawdetail2.setCardtype("2");
drawdetail2.setParvalue(50);
drawdetail2.setAmount(50);
drawdetailList.add(drawdetail1);
drawdetailList.add(drawdetail2);
boolean flag = drawDao.insertDraw(draw, drawdetailList);
//斷言
Assert.assertEquals(true,flag);
}
}
異常如下:
java.lang.NullPointerException
at org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSession(HibernateDaoSupport.java:142)
at com.htdz.card.admin.dao.DrawDao.insertDraw(DrawDao.java:35)
也就是調用到DrawDao里insertDraw()的這句時報錯:session = this.getSession();
業務類里調用這個Dao都能正常使用,為什么從測試類里調用就報這個錯誤?
DrawDao繼承了HibernateDaoSupport了啊。
摘要: 以一個圖片上傳為例子,演示了文件上傳的各個方面。包括客戶端控制,服務端控制,圖片預覽,圖片壓縮等。
閱讀全文