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());
}
}
}