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());
}
}
问题解决。