首页 > 解决方案 > 使用休眠映射 oracle 的类型

问题描述

我在 oracle 中声明了类型

CREATE OR REPLACE TYPE STATUS IS OBJECT
(
   status Number,
   tresc  Varchar2(32767)
)

和功能

Function Test_Status return STATUS IS
Begin
  RETURN new STATUS(2,'Test');
End;

是否可以在hibernate中声明这种类型并通过hibernate获取它?

标签: javaoraclehibernatejpa

解决方案


您将必须实现一个org.hibernate.usertype.CompositeUserType从 JDBC 将其读取到 Java 对象中的方法。然后,您可以在模型中使用 Java 类型。

根据 Oracle JDBC 驱动程序文档,Java 类型必须实现java.sql.SQLData接口:https ://docs.oracle.com/javase/tutorial/jdbc/basics/sqlcustommapping.html

然后,您可以java.sql.ResultSet#getObject(int, java.util.Map<java.lang.String,java.lang.Class<?>>)在用户类型中使用从结果集中提取对象类型并将java.sql.ResultSet#setObject(int, Object)其设置在准备好的语句中。


推荐阅读