(crm-bug)Struts has detected an unhandled exception
阿新 • • 發佈:2018-12-31
Struts has detected an unhandled exception:The given object has a null identifier: com.huiyu.crm.domain.SysUserGroup
錯誤提示資訊::
org.springframework.dao.InvalidDataAccessApiUsageException: The given object has a null identifier: com.huiyu.crm.domain.SysUserGroup;
nested exception is org.hibernate .TransientObjectException: The given object has a null identifier: com.huiyu.crm.domain.SysUserGroup
這個錯誤在提示說在SysUserGroup這個物件有一個空的標誌符,在跟蹤debug後發現在一個地方出錯了:
BeanUtils.copyProperties(sysUserGroup, sysUserGroupFrom);
把一個物件的值複製給另一個物件,這個 copyProperties () 方法在進行javaweb開發的時候經常會用到,而且很方便,關於這個方法的介紹在: 【轉】關於BeanUtils.copyProperties的用法和優缺點
這個方法的好處有很多,但是對於兩個物件的屬性不一樣的時候就很不能用了,所以針對這個錯誤,自行查了一下自己定義的兩個po和vo物件發現:
po:
private Integer id;
private String remark;
private String name;
private String principal;//部門負責人
private String incumbent;//部門職能
vo:
private String id;
private String name;
private String principal;
private String incumbent;
private String remark;
在Id的型別不一樣。
解決辦法:
自行定義一個工具類進行資料複製:
public class copy {
public void SysUserGroupCopyProperties(SysUserGroup sysUserGroup,
SysUserGroupFrom sysUserGroupFrom) {
sysUserGroup.setId(Integer.parseInt(sysUserGroupFrom.getId()));//利用integer這個類的資料強制轉換,進行string 到int的轉換
sysUserGroup.setName(sysUserGroupFrom.getName());
sysUserGroup.setIncumbent(sysUserGroupFrom.getIncumbent());
sysUserGroup.setPrincipal(sysUserGroupFrom.getPrincipal());
sysUserGroup.setRemark(sysUserGroupFrom.getRemark());
}
}
問題解決。