1. 程式人生 > >hibernate Query list()的快取問題二

hibernate Query list()的快取問題二

List<MemberCard> list = systemService.findListBySql();//查詢結果集

for(MemberCard m : list){

Member member = systemService.getEntity(Member.class, memberCard.getMemberId());//查詢得到每個會員物件

m.setName(member .getName());//將會員卡的名字設定為會員的名字

}

for迴圈遍歷時候,當第二次執行 systemService.getEntity()查詢每個會員物件,hibernate先查詢快取,發現第一次查詢的結果值被set過了,那麼先儲存第一次改變了的物件到資料庫中,我這裡僅需要把m的名字改變,並response給前臺,並不希望儲存到資料庫,於是就矛盾了。後來想到先將name和id儲存到Map中,迴圈完畢之後,再改變m的值,如下

List<MemberCard> list = systemService.findListBySql();//查詢結果集

Map<String,String> map = new HashMap<String,String>();

for(MemberCard m : list){

Member member = systemService.getEntity(Member.class, memberCard.getMemberId());//查詢得到每個會員物件

map.put(memberCard.mamberId(),member.getName());

}

for(MemberCard m : list){

m.setName(map.get(m.getMemberId());//將會員卡的名字設定為會員的名字     

}

這樣hibernate就不會將m的改變值持久化到DB中。