我看到几个可能的答案:
在标准JPA中,有两个选择,都涉及Oracle
DUAL“表”
- 映射
DUAL
到实体并在FROM
子句中使用它。这是更“ JPQL”的方式,但涉及更多:
在Java代码中:
@Entity(name = "Dual")@Table(name = "SYS.DUAL")public class Dual { @Id @Column(name = "DUMMY") private String dummy;}在orm.xml中:
<named-query name="yourQuery"> <query><![CDATA[ SELECt FUNCTION('function_name', 'foo', 1234) FROM Dual d ]]> </query></named-query>在客户端代码中:
Query q = entityManager.createNamedQuery("yourQuery");- 只需使用使用
DUAL
在orm.xml中:
<named-native-query name="yourQuery"> <query><![CDATA[ SELECt function_name('foo', 1234) from sys.dual ]]> </query></named-native-query>在客户端代码中:
Query q = entityManager.createNativeQuery("yourQuery");作为最后的选择,您可以对JPA使用一些JPA实现扩展,并避免
DUAL:



