Hibernate 和 Oracle VARRAYS/NESTED TABLE

TBW*_*TBW 5 java oracle hibernate varray nested-table

Oracle 支持使用 VARRAYS 和 NESTED TABLE 数据类型,允许多值属性。(http://www.orafaq.com/wiki/NESTED_TABLE

我目前使用 Hibernate 3 作为我的 ORM 框架,但我不知道如何将 Hibernate 映射到数据库中的 NESTED TABLE/VARRAY 数据类型。

我考虑在 Hibernate 中定义自定义类型,但没有成功。(Hibernate 甚至可以处理取消嵌套子表所需的“COLUMN_VALUE”Oracle 关键字吗?)

有谁知道如何在 Hibernate 中实现这些数据类型?

感谢大家的帮助。

——TBW。

jpk*_*ing 1

我希望我是错的,并且您在研究中找到更好的答案,但 Hibernate 不支持此功能。Hibernate 依赖标准 JDBC 与数据库通信,这些功能不是标准的一部分。它们是 Oracle 扩展。

也就是说,我可以想到一些解决方法:

1) 实现您自己的 UserType。根据您的特定用户类型,您将有机会操纵数据库提供的值(或即将发送到数据库的值)。但这仅在 Oracle 将此值作为以下 java.sql.Types 之一提供时才有效:http://download.oracle.com/javase/1.5.0/docs/api/java/sql/Types.html

2) 另一种选择是通过使用 Hibernate Worker 直接使用 JDBC。请参阅以下 Worker 示例:https://github.com/hibernate/hibernate-core/blob/master/hibernate-core/src/test/java/org/hibernate/test/jdbc/GeneralWorkTest.java

也就是说,我认为您必须权衡解决方案并重新评估是否确实需要嵌套表。