首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate -- Java8函数对象可以持久化在数据库中吗?

Hibernate -- Java8函数对象可以持久化在数据库中吗?
EN

Stack Overflow用户
提问于 2017-12-08 13:28:19
回答 1查看 783关注 0票数 2

我正在研究一个抽象的模型来表示基于事件注册的各种复杂的业务流程。为此,我希望能够使用最新版本的Hibernate来持久化Java8函数对象,例如

代码语言:javascript
复制
@Entity
public class Foo {
    private Runnable onUpdate = () -> System.out.println("worked");
    private java.util.function.Function<String, String> identity = s -> s;
    // imagine bean-compliant getter and setter
}

持久化方法引用不是一个选项,因为在运行时,在设置回调之前,部分方法应用程序是必需的。

仅仅尝试上面的代码就会导致以下异常:

org.hibernate.MappingException: Could not determine type for: java.lang.Runnable ...

是否有任何方法来持久化与固定功能接口(如Runnable )匹配的函数对象?如果没有,有什么可供选择的策略?

关于XY问题的编辑:

我希望能够在运行时将对象中的方法与某些hibernate实体的PostUpdate回调相关联,同时让用户提供hibernate回调无法提供的所有参数。例如,我有一个实体@Entity public class Bar和另一个带有方法void foo(Bar new, int i)的控制器类。现在,每当数据库中更新特定的Bar实例时,我都希望它使用更新的对象和参数i调用foo,这是用户在当前或以前的运行时指定的,同时将foo-EventBar实例关联起来。

最重要的是,我希望持久化这个运行时关联使用Hibernate,保持对方法、方法所属的对象以及关联期间提供的所有参数的引用。然后,在服务器启动时,一旦加载控制器对象,它就会监听对实体实例所做的更改。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-08 14:38:40

不是

不幸的是,在当前版本的Hibernate中,不可能将Java 8函数存储在数据库中。Lambda不实现Serializable,也没有办法让它们这样做。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47715365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档