gpt4 book ai didi

java - 如何在 Hibernate 中使用 Oracle XMLTYPE

转载 作者:行者123 更新时间:2023-12-03 23:14:11 27 4
gpt4 key购买 nike

其中一列是 Oracle 数据库中的 XMLTYPE 类型。在我的应用程序中,我想保留数据并使用 Hibernate。

我做了以下在 hibernate 中映射 XMLTYPE

  1. 定义实现 UserType 的自定义用户类型

  2. 自定义用户类型实现基于博客链接 - http://community.jboss.org/wiki/MappingOracleXmlTypetoDocument

  3. 但我们没有使用 C3p0 连接池,而是使用 DBCP

我在自定义用户类型中创建 XMLType 时遇到问题

XMLType.createXML(st.getConnection(),HibernateXMLType.domToString((Document) value));

其中 st 是传递给方法的 preparedStatement。

st.getConnection() 返回的连接对象是 org.apache.commons.dbcp.PoolableConnection 类型

但是 createXML 方法只需要 oracle.jdbc.OracleConnection 类型的连接对象

我也尝试获取 getInnermostDelegate 但这也不起作用。

XMLTYPE 创建方法在包含的 jar xdb.jar 中 - 根据包含的版本会有任何变化吗?

谢谢

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

使用以下代码获取 SQLConnection 对象-

SimpleNativeJdbcExtractor extractor = new SimpleNativeJdbcExtractor();
PoolableConnection poolableConnection = (PoolableConnection) extractor
.getNativeConnection(st.getConnection());
Connection sqlConnection = poolableConnection.getInnermostDelegate();

现在,错误信息是java.sql.SQLException: Invalid column type

下面是过载的方法

public void nullSafeSet(PreparedStatement st, Object value, int index)
throws HibernateException, SQLException {

SimpleNativeJdbcExtractor extractor = new SimpleNativeJdbcExtractor();
PoolableConnection poolableConnection = (PoolableConnection) extractor
.getNativeConnection(st.getConnection());
Connection sqlConnection = poolableConnection.getInnermostDelegate();

try {
XMLType xmlType = null;
if (value != null) {
xmlType.createXML(sqlConnection, HibernateXMLType
.domToString((Document) value));

}
st.setObject(index, xmlType);
} catch (Exception e) {
e.printStackTrace();
throw new SQLException(
"Could not convert Document to String for storage");
}
}

现在毫 headless 绪...

最佳答案

我在使用 Java 中的 XMLType 时遇到了很多问题,我用一种非常简单的方法解决了这个问题。

我从 Oracle DB 端更改了输入数据类型,从 XMLtype 到 CLOB,然后我轻松地传递了 CLOB 并在存储过程的第一行;我从 CLOB 构建了一个 XMLType。

CLOB 在 java 中非常简单,只需将其用作 String (statement.setString(1, string);)

关于java - 如何在 Hibernate 中使用 Oracle XMLTYPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3819135/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com