java - Hibernate拦截器.instantiate()

标签 java hibernate interceptor

我正在尝试使用 org.hibernate.Interceptor.instantiate() 来拦截实例化(显然)并使用默认构造函数之外的构造函数手动实例化特定对象。如果要阅读此方法的 JavaDoc,实际上,这似乎就是 Hibernate 公开此类内容的全部意义。

但是,我得到的只是实体名称、EntityModeSerialized 标识符。因此,除非我的目标是调用一个将 ID 作为唯一参数的构造函数,否则我就是 SOL。如果这个方法只给我足够的信息来调用另一个(非常具体的)构造函数,为什么还会存在?我应该如何检索其他实体属性的值?

编辑:显然,经过更多的工作和研究,我想做的事情是不可能的。所以我只是接受了迈克的回答,然后就到此为止了。

最佳答案

调用实例化拦截器以允许您提供自定义机制,用于在设置新映射实体的任何属性之前实例化该实体。由于该实体在调用该拦截器之前并不存在,因此不可能设置其任何属性。在生命周期的此时,Hibernate 知道的唯一值是实体的类型和要为其分配的 ID。您可以使用此拦截器根据配置设置等来更改实例实例化,但不能根据实例化后设置的属性值来更改实例实例化。

你想用这个来实现什么目的?

关于java - Hibernate拦截器.instantiate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14442807/

相关文章:

java - Spring MVC中如何通过拦截JSP页面上的请求来显示不同的错误jsp页面?

java - 解释Euler's Totient Implementation的实现

java - 如何为微调器设置适配器

java - 如何添加持久媒体控件,如 Apollo 或 Google 音乐

java - org.hibernate.Query 中的 setMaxResults 和 setFetchSize 有什么区别?

javascript - 如何在 ExtJ 中拦截 Ajax 响应?

Java 线程 hibernate

java - session.update 未在数据库中更新

java - Hibernate 无法使用 JBOSS 检索数据

jsf - 拦截器不适用于 JSF 托管 bean?