





但是使用 HSQL 查詢數(shù)據(jù)庫時(shí),我們要改為:
from ReMaster as rm left join rm.reDetails as rd
Hibernate 會(huì)自動(dòng)找相同的鍵,不用on,而且關(guān)聯(lián)表要寫成:rm.reDetails
/**
* description: 通過被保人號(hào)碼查詢?cè)俦C骷?xì)
*
* @param insuredId
* 被保人身份證號(hào) String
* @return List 結(jié)果列表
* @throws DbAccessException
* 數(shù)據(jù)庫異常
*/
public List selectReMasterDetail(String insuredId)
throws DbAccessException {
if (DEBUGLOG.isDebugEnabled()) {
DEBUGLOG.debug("[ReDetailDao]"
+ "[Function:selectReMasterDetail][Begin]");
}
StringBuffer hqlRd = new StringBuffer();
hqlRd.append(" from ReMaster as rm left join rm.reDetails as rd " +
"where 1=1");
if (insuredId != null) {
hqlRd.append(" and rd.insuredId = '" + insuredId + "'");
}
hqlRd.append(" order by rm.policyNo asc, rm.policySeqno asc");
if (DEBUGLOG.isDebugEnabled()) {
DEBUGLOG.debug("[ReDetailDao][Function:selectReMasterDetail][End]");
}
return this.createQuery(hqlRd.toString());
}
* description: 通過被保人號(hào)碼查詢?cè)俦C骷?xì)
*
* @param insuredId
* 被保人身份證號(hào) String
* @return List 結(jié)果列表
* @throws DbAccessException
* 數(shù)據(jù)庫異常
*/
public List selectReMasterDetail(String insuredId)
throws DbAccessException {
if (DEBUGLOG.isDebugEnabled()) {
DEBUGLOG.debug("[ReDetailDao]"
+ "[Function:selectReMasterDetail][Begin]");
}
StringBuffer hqlRd = new StringBuffer();
hqlRd.append(" from ReMaster as rm left join rm.reDetails as rd " +
"where 1=1");
if (insuredId != null) {
hqlRd.append(" and rd.insuredId = '" + insuredId + "'");
}
hqlRd.append(" order by rm.policyNo asc, rm.policySeqno asc");
if (DEBUGLOG.isDebugEnabled()) {
DEBUGLOG.debug("[ReDetailDao][Function:selectReMasterDetail][End]");
}
return this.createQuery(hqlRd.toString());
}
在Service層進(jìn)行調(diào)用:
// 通過 InsuredId 查詢ReMaster檔和ReDetail檔
rmdList = rdDao.selectReMasterDetail(iqVo.getInsuredId());
rmdList = rdDao.selectReMasterDetail(iqVo.getInsuredId());
取List中的對(duì)象時(shí)用對(duì)象數(shù)組接,因?yàn)榉祷氐氖莾蓚€(gè)對(duì)象:

Object[] obj = null;
ReDetail rd = null;
ReMaster rm = null;
int rmdSize = 0;
if (rmdList != null) {
rmdSize = rmdList.size();
}
for (int rmdIndex = 0; rmdIndex < rmdSize; rmdIndex++) {
obj = new Object[2];
obj = (Object[])rmdList.get(rmdIndex);
rm = new ReMaster(); // 用於存儲(chǔ)公司別信息
rd = new ReDetail();
rm = (ReMaster) (obj[0]);
rd = (ReDetail) (obj[1]);
ReDetail rd = null;
ReMaster rm = null;
int rmdSize = 0;
if (rmdList != null) {
rmdSize = rmdList.size();
}
for (int rmdIndex = 0; rmdIndex < rmdSize; rmdIndex++) {
obj = new Object[2];
obj = (Object[])rmdList.get(rmdIndex);
rm = new ReMaster(); // 用於存儲(chǔ)公司別信息
rd = new ReDetail();
rm = (ReMaster) (obj[0]);
rd = (ReDetail) (obj[1]);
這樣就可以處理得到的ReMaster對(duì)象和ReDetail對(duì)象了。