package dc.dao;
import java.util.Iterator;
import java.util.Set;
import junit.framework.TestCase;
//一对多的时候先存一,再存多,多.saveF(一),然后通过一的ID来加载查询刚刚存进的数据,由于hiberante的
//缓存机制,只能查询到一的数据,查询不到多的数据,通过show_sql看到查询时候没发出sql语句
//通过设置lazy=false试过也不行,通过session.flush试过也不行
//最后发现通过在加载之前加上session.clear()就可以解决问题了
public class TestSaveAndLoad extends TestCase {
TanluDAO tandao = new TanluDAO();//一
Tanlu tan = new Tanlu();
Ecswjcb ej = new Ecswjcb();//多
EcswjcbDAO ejdao = new EcswjcbDAO();
public void saveTest(){
tan.setBeiZhu("test");
tan.setJiDu("0");
tandao.save(tan);
ej.setBenDi027tian(100);
ej.setBenDi0sui(200);
ej.setTanlu(tan);
ejdao.save(ej);
//加上这句就可以解决问题了
HibernateSessionFactory.getSession().clear();
this.loadTest(tan.getTlid());
}
public void loadTest(String id){
tan = tandao.findById(id);
Set set = tan.getEcswjcbs();
Iterator itx = set.iterator();
while(itx.hasNext()){
ej = (Ecswjcb)itx.next();
System.out.println(ej.getBenDi027tian());
System.out.print(" heui:" + ej.getBenDi0sui());
}
}
}