1. 程式人生 > >(crm-bug)Struts has detected an unhandled exception

(crm-bug)Struts has detected an unhandled exception

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

    }
}

問題解決。