截取代码中的几行,其中getLzFamilyCheckInfoByFamilyCode对应的是一个hql语句方法。String familyCode = ParamUtils.getString(request, "familyCode", "");
LzFamilyCheckInfo lzFamilyCheckInfo1 = lzFamilyCheckInfoManager.getLzFamilyCheckInfoByFamilyCode(familyCode);
if(lzFamilyCheckInfo1 == null){
throw new Exception("没有家庭审核记录");
}……String districtAuditEnsureType = ParamUtils.getString(request, "districtAuditEnsureType", "");
lzFamilyCheckInfo1.setDistrictAuditEnsureType(new Byte(districtAuditEnsureType));……LzFamilyCheckInfo lzFamilyCheckInfo2 = lzFamilyCheckInfoManager.getLzFamilyCheckInfoByFamilyCode(familyCode);
System.out.pritnln("DistrictAuditEnsureType: "+lzFaliyCheckInfo.getDistrictAuditEnsureType());……lzFamilyCheckInfoManager.editOjbect(lzFamilyCheckInfo1);问题是这样,首先取得lzFamilyCheckInfo1并将其中的一个属性Set新值,然后又取得lzFamilyCheckInfo2,
可打印出来的lzFamilyCheckInfo2中的属性已经是刚才lzFamilyCheckInfo1中Set的那个新值。这是为什么啊?lzFamilyCheckInfo1还没有保持啊。是否可以用java参数传递方式是按值还是按引用来解释?
LzFamilyCheckInfo lzFamilyCheckInfo1 = lzFamilyCheckInfoManager.getLzFamilyCheckInfoByFamilyCode(familyCode);
if(lzFamilyCheckInfo1 == null){
throw new Exception("没有家庭审核记录");
}……String districtAuditEnsureType = ParamUtils.getString(request, "districtAuditEnsureType", "");
lzFamilyCheckInfo1.setDistrictAuditEnsureType(new Byte(districtAuditEnsureType));……LzFamilyCheckInfo lzFamilyCheckInfo2 = lzFamilyCheckInfoManager.getLzFamilyCheckInfoByFamilyCode(familyCode);
System.out.pritnln("DistrictAuditEnsureType: "+lzFaliyCheckInfo.getDistrictAuditEnsureType());……lzFamilyCheckInfoManager.editOjbect(lzFamilyCheckInfo1);问题是这样,首先取得lzFamilyCheckInfo1并将其中的一个属性Set新值,然后又取得lzFamilyCheckInfo2,
可打印出来的lzFamilyCheckInfo2中的属性已经是刚才lzFamilyCheckInfo1中Set的那个新值。这是为什么啊?lzFamilyCheckInfo1还没有保持啊。是否可以用java参数传递方式是按值还是按引用来解释?
public LzFamilyCheckInfo getLzFamilyCheckInfoByFamilyCode1(String familyCode) {
String hql = "from LzFamilyCheckInfo c where c.dataFlag=1 and c.abateDate is null and c.familyCode=?";
return (LzFamilyCheckInfo)super.uniqueResult(hql, new Object[]{familyCode});
}
……
两个方法都执行了查询语句,还是老问题。
我想知道,同一个对象的两个实例,把其中一个实例的某个属性set了新值,另一个实例的那个属性会变化么?
==>当然不会. 你设个断点看看lzFamilyCheckInfo1和lzFamilyCheckInfo2是不是同一个对象(看Object Id). 如果你没有改写过它的toString()方法, 也可以直接print一下, 看看是不是一样的.