[英]Hibernate Get Detached Object in Service, alter the ID and persist again
我已經在這里和幾乎相同的地方問過這個問題 。 但是即時通訊正在尋找一種不同的方法。
我有Java Spring MVC應用程序。 員工說,我正在嘗試在一張桌子上做CRUD。
我試圖使用休眠從數據庫中獲取對象,進行一些更改, 包括更改ID ,然后再次保存它。 我在我的服務層中
我的ServiceImpl中有以下代碼
public class EmployeeServiceImpl extends GenericManagerImpl<Employee, Long> implements EmployeeService {
@Override
public void saveOld(Long key) {
employee = (Employee) employeeDao.get(key);
employee.setActive(false);
employee.setEmpKey(null);
employeeDao.save(employee);
}
}
但是我越來越例外了。
org.springframework.orm.hibernate4.HibernateSystemException: identifier of an instance of com.table.model.Employee was altered from 4 to null; nested exception is org.hibernate.HibernateException: identifier of an instance of com.table.model.Employee was altered from 4 to null
從上面我提到的問題中 ,我可以選擇使用復制COnstructor,復制除key以外的所有值,並在服務中設置其他值並保存。 它正在工作。
employee = (Employee) employeeDao.get(key);
employee = new Employee(employee);
employee.setActive(false);
employeeDao.save(employee);
我正在尋找其他方法。 如何從會話中將對象作為分離對象,更改包括ID的值,然后再次保留? 所有這些都應該在服務層中。
謝謝。
您可以使用Commons BeanUtils
org.apache.commons.beanutils.PropertyUtils.copyProperties(dest,source);
做如下
Employee source = (Employee) employeeDao.get(key);
Employee dest= new Employee();
org.apache.commons.beanutils.PropertyUtils.copyProperties( dest, source );
dest.setId(null);
dest.setActive(false);
employeeDao.save(dest);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.