Oracle 休眠 ORA-01461 CLOB

2023-12-07

//大家好。 我的问题是我无法在 clob 字段中写入大日期。 currentli 我可以写长度不超过4000的字符串。你能解释一下为什么我不能将 clob 写入 clob 字段吗? 我在用着:

  • Oracle 数据库 11g 企业版版本 11.2.0.1.0
  • 列表项 hibernate 4.2.6.Final
  • 列表项 ojdbc 11.1.0.7.0

我的实体是:

@Entity
@Table(....)
public class UiViewSettings implements java.io.Serializable {

    private Integer id;
    private String viewName;
    private String userName;
    private Clob data;
        ....
    @Column(name = "VIEW_DATA", nullable = false)
    public Clob getData() {
        return this.data;
    }
        ....
}

我的更新实体的代码:

UiViewSettings viewSettings = new UiViewSettings();
Clob createClob;
//creatind clob
viewSettings.setData(createClob);
session.update(viewSettings);

我尝试了几种创建 Clob 的方法:

createClob = new SerialClob(xml.toCharArray());

and

connection = DriverManager.getConnection(...);
createClob = ((OracleConnection)connection).createClob();
createClob.setString(1, xml);

两种方式都会抛出异常:

Caused by: org.hibernate.exception.GenericJDBCException: could not execute statement
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:136)
    at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:58)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3067)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3509)
    at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:88)
    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:377)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:369)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:286)
    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:339)
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1234)
    at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)


Caused by: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column

    at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
    at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:953)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3387)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3468)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:147)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:133)

EDIT

表是

CREATE TABLE "AQUARIUS"."UI_VIEW_SETTINGS_LT" 
   (    "VIEW_ID" NUMBER NOT NULL ENABLE, 
    "VIEW_NAME" VARCHAR2(50 BYTE) NOT NULL ENABLE, 
    "USER_NAME" VARCHAR2(20 BYTE) NOT NULL ENABLE, 
    "VIEW_DATA" CLOB NOT NULL ENABLE, 
    "VERSION" NUMBER(*,0), 
    "CREATETIME" TIMESTAMP (6) WITH TIME ZONE, 
    "RETIRETIME" TIMESTAMP (6) WITH TIME ZONE, 
    "NEXTVER" VARCHAR2(500 BYTE), 
    "DELSTATUS" NUMBER(*,0), 
    "LTLOCK" VARCHAR2(100 BYTE), 
     CONSTRAINT "UI_VIEW_SETTINGS_PK" PRIMARY KEY ("VERSION", "VIEW_ID", "DELSTATUS")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"  ENABLE NOVALIDATE
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS" 
 LOB ("VIEW_DATA") STORE AS BASICFILE (
  TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION 
  NOCACHE LOGGING 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) ;

这段代码在 SQL Developer 中执行良好

DECLARE
 REALLYBIGTEXTSTRING CLOB := '123';
 i int;
BEGIN

    WHILE LENGTH(REALLYBIGTEXTSTRING) <= 90000 LOOP
        REALLYBIGTEXTSTRING := REALLYBIGTEXTSTRING || '000000000000000000000000000000000';
    END LOOP;
    DBms_output.put_line('I have started inputting your clob: '|| length(REALLYBIGTEXTSTRING)); 
   INSERT INTO UI_VIEW_SETTINGS(view_id , view_name ,user_name, view_data) VALUES(0, 'test', 'test', REALLYBIGTEXTSTRING);
    DBms_output.put_line('I have finished inputting your clob: '|| length(REALLYBIGTEXTSTRING)); 
end ;

尝试添加@LOB(type = LobType.CLOB)注释在你的顶部data访问器方法:

@Column(name = "VIEW_DATA", nullable = false)
@LOB(type = LobType.CLOB)
public Clob getData() {
    return this.data;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle 休眠 ORA-01461 CLOB 的相关文章

  • 如何在一行中将字符串数组转换为双精度数组

    我有一个字符串数组 String guaranteedOutput Arrays copyOf values values length String class 所有字符串值都是数字 数据应转换为Double QuestionJava 中
  • 我需要在 Spring 中检查每个控制器中的有效会话吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 假设在 Spring Mvc 的 Web 应用程序中 我们是否需要检查每个控制器或 jsps 中的有效会话 我该如何解决 MVC 中的
  • 如何测试 JUnit 测试的 Comparator?

    我需要测试 Compare 方法 但我对如何测试感到困惑 我可以看看该怎么做吗 public class MemberComparator implements Comparator
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • 在浏览器中点击应用程序时播放框架挂起

    我正在 Play 中运行一个应用程序activator run 也许 5 次中有 3 次 它会挂起 当我去http localhost 9000 它就永远坐在那里旋转 我看到很多promise timed out错误也 我应该去哪里寻找这个
  • java.io.IOException: %1 不是有效的 Win32 应用程序

    我正在尝试对 XML 文档进行数字签名 为此我有两个选择 有一个由爱沙尼亚认证中心为程序员创建的库 还有一个由银行制作的运行 Java 代码的脚本 如果使用官方 认证中心 库 那么一切都会像魅力一样进行一些调整 但是当涉及到银行脚本时 它会
  • 如何在 Java 中禁用 System.out 以提高速度

    我正在用 Java 编写一个模拟重力的程序 其中有一堆日志语句 到 System out 我的程序运行速度非常慢 我认为日志记录可能是部分原因 有什么方法可以禁用 System out 以便我的程序在打印时不会变慢 或者我是否必须手动检查并
  • 如何在jsp代码中导入java库?

    我有以下jsp代码 我想添加 java io 等库 我怎样才能做到这一点
  • Microsoft Graph 身份验证 - 委派权限

    我可以使用 Microsoft Graph 访问资源无需用户即可访问 https developer microsoft com en us graph docs concepts auth v2 service 但是 此方法不允许我访问需
  • 在具有相同属性名称的不同数据类型上使用 ModelMapper

    我有两节课说Animal AnimalDto我想用ModelMapper将 Entity 转换为 DTO 反之亦然 但是对于具有相似名称的一些属性 这些类应该具有不同的数据类型 我该如何实现这一目标 动物 java public class
  • 如何将文件透明地传输到浏览器?

    受控环境 IE8 IIS 7 ColdFusion 当从 IE 发出指向媒体文件 例如 mp3 mpeg 等 的 GET 请求时 浏览器将启动关联的应用程序 Window Media Player 我猜测 IIS 提供文件的方式允许应用程序
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 尝试使用 Ruby Java Bridge (RJB) gem 时出现错误“无法创建 Java VM”

    我正在尝试实现 Ruby Java Bridge RJB gem 来与 JVM 通信 以便我可以运行 Open NLP gem 我在 Windows 8 上安装并运行了 Java 所有迹象 至少我所知道的 都表明 Java 已安装并可运行
  • Java直接内存:在自定义类中使用sun.misc.Cleaner

    在 Java 中 NIO 直接缓冲区分配的内存通过以下方式释放 sun misc Cleaner实例 一些比对象终结更有效的特殊幻像引用 这种清洁器机制是否仅针对直接缓冲区子类硬编码在 JVM 中 或者是否也可以在自定义组件中使用清洁器 例
  • Java中未绑定通配符泛型的用途和要点是什么?

    我不明白未绑定通配符泛型有什么用 具有上限的绑定通配符泛型 stuff for Object item stuff System out println item Since PrintStream println 可以处理所有引用类型 通
  • Android JNI C 简单追加函数

    我想制作一个简单的函数 返回两个字符串的值 基本上 java public native String getAppendedString String name c jstring Java com example hellojni He
  • 如何测试 spring-security-oauth2 资源服务器安全性?

    随着 Spring Security 4 的发布改进了对测试的支持 http docs spring io spring security site docs 4 0 x reference htmlsingle test我想更新我当前的
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • java迭代器内部是如何工作的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个员工列表 List
  • 中断连接套接字

    我有一个 GUI 其中包含要连接的服务器列表 如果用户单击服务器 则会连接到该服务器 如果用户单击第二个服务器 它将断开第一个服务器的连接并连接到第二个服务器 每个新连接都在一个新线程中运行 以便程序可以执行其他任务 但是 如果用户在第一个

随机推荐

  • 当我的 Cordova 应用程序进入后台时,如何在 InAppBrowser 上暂停 YouTube 视频?

    我正在使用 Cordova 和 Ionic 框架开发 Android 应用程序 我正在使用以下代码通过 InAppBrowser 播放 YouTube 视频 window open https www youtube com embed r
  • 在 Qt3D 中导入对象不起作用,但没有错误消息

    我有一个导入 STL 文件格式的 Qt3D 应用程序 m sceneLoaderEntity new Qt3DCore QEntity m sceneLoaderEntity gt setObjectName New imported en
  • 如何使用 Firebase 将多个通知折叠为单个通知?

    我在 Firebase Cloud Functions 中有一个函数 用于向我的应用程序中的特定用户发送通知 并且具有notificationContent下面的代码 const notificationContent notificati
  • java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Row

    我制作了一个小型应用程序 它从 excel xls 文件 中读取数据并将内容显示到 JTable 中 Eclipse 中一切正常 但是当我创建 jar 文件并尝试运行它时 出现以下问题 java lang NoClassDefFoundEr
  • 隐藏文本,但如果在没有 JavaScript 的情况下复制和粘贴,则显示它

    我正在尝试为一个短篇小说网站进行设计 我听说的一个故事如果有人复制并粘贴文本 效果会更好 多余的行就会出现 有没有办法只用 HTML 和 CSS 来实现这一点 我尝试过使用display none 但这似乎并没有复制隐藏的文本 我不想为此使
  • jQuery 获取元素的渲染高度?

    如何获取元素的渲染高度 假设你有一个 div 里面有一些内容的元素 里面的内容将会拉伸 div 当您没有明确设置高度时 如何获得 渲染 高度 显然 我尝试过 var h document getElementById someDiv sty
  • 每个数据库的 Cloud Firestore 移动并发连接限制和每个数据库每秒的最大写入次数

    Firebase Cloud Firestore 已正式结束测试版 每个数据库的移动设备的新最大并发连接限制和每个数据库每秒的最大写入次数是多少 发布文章https cloud google com blog products databa
  • 更改 Facebook SDK 请求对话框标题和通知标题

    这个问题是关于android的 我已经花了一周的时间尝试显示我自己的消息作为邀请 请求对话框和通知的标题 对于facebook SDK 3 0 但我不知道如何 并且facebook SDK文档是一段 我必须从头开始阅读所有文档才能了解一点信
  • 用户卸载并重新安装时设备 UUID 不唯一

    我有一个系统 每个用户只允许为两个设备安装应用程序 当用户在同一设备上卸载并重新安装时 就会出现此问题 因此 当应用程序检查 Web 服务时 它将生成新的 UUID 应用程序将发送 UUID 和登录 ID 以检查具有该登录 ID 的用户是否
  • 为什么会出现这种行为?__proto__ vs 原型?

    function Obj1 name this proto Name name getName function alert this Name function Obj2 name this prototype Name name get
  • 如何在 jGit 中使用过滤器?

    我该如何使用RevFilter在 jGit 中吗 我找到了有关完成特定任务的问题的答案 获取两个日期之间所做的提交 答案是使用特定的子类RevFilter 但是 我不知道如何使用RevFilters 特别是 我想知道我需要做什么才能得到我链
  • SQL 查询查找与一组类别匹配的产品

    我有 3 个表 产品 类别和 pro cat link 一款产品可以通过表 pro cat link 链接到一个或多个类别 我的查询必须回答以下问题 查找与一组类别匹配的所有产品 例如 查找所有 黄色和水果和甜 的产品 在 SO 研究这个问
  • 如何禁用 gridview 中命令字段控件中的控件

    如何在网格视图中查找命令字段控件 在不在行数据绑定中的方法中 到目前为止 我已经使用了这个编码 但我找不到控件
  • Angularjs 将值从一个页面传递到另一个页面

    在下面的代码中 我尝试在单击时更改到另一个页面并希望传递对象i我该怎么做 在下面的代码中 我将其视为未定义 如何解决这个问题
  • SSAO 文物分为三部分

    我真的很难解决 SSAO 着色器的问题 并且迫切需要一些帮助 基本上 着色器似乎对某些对象有效 但在其他对象上看起来很糟糕 从下面您可以看到球体看起来是正确的 但立方体似乎在法线上进行了不应该的遮挡 这是一个屏幕截图 我的着色器基于本教程
  • Azure 网站上的 SignalR CryptographicException

    我在 Azure 网站中部署的 SignalR 中遇到了此异常 在调试环境下运行良好 它是 SignalR 1 0 1 我使用 NET MVC 和 WebApi The data protection operation was unsuc
  • 如何使用 Azure Function V2 管理签名证书

    我正在使用消费计划上的 Azure Functions 应用程序 Func 应用程序需要加载特定的签名证书 在本地计算机中 我将证书设置为个人证书 一切正常 在azure上发布后 我收到此错误 LocalMachine 中有 0 个主题名称
  • 如何找到数组中可能的最小键组合

    我有一个始终有 6 个键的数组 var ary 5 10 28 50 56 280 我有一个变量定义为limit我想核对一下 我想从上面的数组中找到尽可能低的组合或键的总和limit 我们称之为result 我试图在一些限制范围内工作 1
  • java中简单的流读/写问题

    我正在尝试通过 URLConnection 上传文件 但我需要将其作为二进制文件读取 写入 而不进行任何编码更改 所以我尝试阅读byte 数组从一个FileInputStream 但现在我有一个问题 这PrintWriter我用于输出到服务
  • Oracle 休眠 ORA-01461 CLOB

    大家好 我的问题是我无法在 clob 字段中写入大日期 currentli 我可以写长度不超过4000的字符串 你能解释一下为什么我不能将 clob 写入 clob 字段吗 我在用着 Oracle 数据库 11g 企业版版本 11 2 0