通过createNativeQuery JPA方法将CLOB插入ORACLE而不受32766字符限制

时间:2015-06-02 11:06:20

标签: java spring oracle jpa clob

环境:

  • DB:Oracle
  • Spring:3.1.2
  • Hibernate:3.6.0

问题:

当我尝试使用大于32766字符的字符串执行此代码时,我会遇到异常:

Query updateQuery = getEntityManager().createNativeQuery("Insert into CLOB_TEST (ID,CLOB_COLUMN)values(120001,?)");
updateQuery.setParameter(1, "CLOB VALUE");
updateQuery.executeUpdate();

例外:

SQLException: setString can only process strings of less than 32766

要求:

  • 我需要使用entityManager.createNativeQuery方法
  • 无法使用ORM,因为我没有静态映射
  • 我需要插入/更新没有字符32766限制的CLOB数据
  • 我需要JPA交易管理

解决方法:

我能够通过使用从本机oracle连接接收的PreparedStatement来克服此限制,但后来我无法使用@Transaction注释管理事务,因为我正在省略entityManager。

问题:

有没有办法克服这个限制而不会失去JPA事务管理功能?

0 个答案:

没有答案