0

它的问题与此相同:仅在常规 Hibernate 而不是 NHibernate 中使用 NHibernate 填充现有实体。这个问题也没有完全回答海事组织。

总而言之,是否有可能(在休眠状态下)通过先前附加的实体填充/填充新实体?就像是:

daoService.getEntityManager().find(Student.class, 123L); 
Student student = new Student(123) // Creating a new student

daoService.fill(student);

结果应该是学生实例将具有与实体管理器找到的值完全相同的值。

我不能使用合并,因为它返回一个新实例(而不是填充给定实例),如果 ID 属于已附加的实体,我不能使用 load()。我希望代码对每个实体都是通用的,因此仅手动设置值是不切实际的。我宁愿在这种情况下不使用反射,因为所有潜在的陷阱(延迟初始化、继承、没有相应 set 方法的 get 方法,反之亦然,等等)

我正在开发一个同时使用 JPA 实体和非实体(使用 JDBC)的遗留系统,这可以解决我的一些主要问题。

在此先感谢您的帮助!

4

1 回答 1

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));
}
于 2012-05-25T07:03:18.710 回答