2008-11-27 53 views
1

我有一个实体映射到一个外部的oracle表,它是我的应用程序的主要数据源之一。该实体使用hibernate进行建模。休眠和Oracle原生函数

oracle表现在定义了一个复杂的函数来计算一些特殊的值。我需要以某种方式调用此函数 - 几乎作为实体的另一个访问者。

你会提出什么是最好的方法来合并这个函数调用,以便我可以保持相对正常的hibernate访问实体?

回答

1

我必须使用@Formula注释

0

您可以直接使用带HQL的存储过程调用该函数。当然,除非你需要为表格中的每个条目调用这个函数。但是,如果你在同一个hibernate会话中做到这一点,只要你没有同时进行多次调用,这应该没有显着的性能影响。

+0

我需要为表中的每个条目调用它。这个实体是从头到尾处理的,因此有一种方法可以将函数调用作为自然读的一部分。 SQL是这样的: 从DataTable中选择FIELD1,FIELD2,FUNCTION(FIELD1) – LenW 2008-11-28 06:38:20

1

为了保持解耦从数据库,由Hibernate提供一个解决方案,我会依赖Oracle调用这个函数,使用触发器或视图。

这种方法的主要优点是它对你的Hibernate实现是完全无缝的。

+0

你将如何做到这一点与需要参数的函数? – LenW 2008-12-03 14:44:15