1

我正在尝试将旧版应用程序转换为休眠状态。

我有一个具有字段的实体,应根据数据库中的完全限定名称字符串将其实例化为对象实例。

考虑下面的示例 - 如果我somePackageName.FirstClass在数据库中有该someObject字段应该是FirstClass.

我想我可以使用属性访问并持久化/检索一个字符串,但这对我来说看起来不是很优雅。

我不能使用@PostLoad等-我正在使用纯休眠和spring(不是JPA)-这些注释被忽略了。

例如,我知道在 MyBatis 中可以为字段注册一个自定义处理程序。在 Hibernate 中会有类似的东西吗?

我是hibernate的新手,所以我不太确定选项是什么。

@Entity
class SomePersistentClass{
   private SomeInterface someObject; 

}

class FirstClass implements SomeInterface{
}

class SecondClass implements SomeInterface{
}
4

1 回答 1

0

只需启用适当的 Hibernate 事件侦听器,您就可以使用 JPA 功能,例如 @PostLoad 等回调。有关详细信息,请查看 Hibernate EntityManager 指南。

但这一个更容易。这就是 Hibernate 中 Type 的作用。首先,您必须编写 org.hibernate.type.Type 或 org.hibernate.usertype.UserType 的实现,并在处理转换的 @Type( type=... ) 中指定它(大量关于编写的网络资源自定义休眠类型)。然后用 @Type( type="your.custom.TypeImpl" ) 注释你的 'someObject' 属性

于 2012-05-17T14:49:08.637 回答