它的问题与此类似:Populating an existing entity using NHibernate仅适用于常规Hibernate,而不适用于NHibernate。这个问题也没有完全回答IMO。
总结一下,是否有可能(在休眠状态下)通过先前附加的实体填充/填充新实体?类似的东西:
daoService.getEntityManager().find(Student.class, 123L);
Student student = new Student(123) // Creating a new student
daoService.fill(student);
结果应该是学生实例将具有与实体经理找到的确切值。
我不能使用merge,因为它返回一个新实例(而不是填充给定的实例),如果ID属于已经附加的实体,我就不能使用load()。 我希望代码对每个实体都是通用的,因此仅手动设置值是不实际的。由于所有潜在的陷阱(懒惰初始化,继承,没有相应的设置方法的get方法,反之亦然等),我宁愿不在此上下文中使用refelection。
我正在研究使用JPA实体和非实体(使用JDBC)的遗留系统,这可以解决我的一些主要问题。
提前感谢您的帮助!
答案 0 :(得分:0)
语法不完全准确,因为我写的是我的头脑
Student student = new Student();
metadata = factory.getClassMetaData(Student.class);
metadata.getIdproperty();
// copy id
for(Property prop in metadata.getPropertyClosureIterator)
{
prop.setValue(student, prop.getValue(managedStudent));
}