【问题标题】:Hibernate/JPA issue with VARCHAR2( 32767 CHAR) : ORA-01461: can bind a LONG value only for insert into a LONG columnVARCHAR2(32767 CHAR)的 Hibernate/JPA 问题:ORA-01461:只能绑定 LONG 值以插入 LONG 列
【发布时间】:2019-08-19 14:28:48
【问题描述】:

我正在尝试将 5000 个字符的数据插入 VARCHAR2(32767 CHAR) db 列。它与普通 JDBC 程序一起工作正常。但是当我尝试使用 JPA 程序运行时,它不起作用。

清除摘要: 我创建了一个包含 VARCHAR2(32767 CHAR) 列的表

我的 JPA 代码正在尝试将大字符串插入此字段,该字段包含 5000 个字符。

当我使用spring.jpa.hibernate.ddl-auto=create 运行此代码时,该字段将被创建为 LONG 而不是 VARCHAR2(32676 CHAR) 并且我能够插入数据。

但是当我使用列 VARCHAR2(32767 CHAR) 手动创建表时。并尝试从 JPA 插入代码。仍然 JPA 在内部将该列转换为 LONG 并尝试插入。

所以我得到 ORA-01461: can bind a LONG value only for insert into a LONG column。

有什么解决办法吗?

【问题讨论】:

  • 映射的样子如何?
  • @Column(name = "position", columnDefinition="VARCHAR2 32767 CHAR") 私有字符串位置;
  • 不应该是VARCHAR2(32767 CHAR)
  • @Simon,那应该是什么?

标签: hibernate jpa spring-data-jpa


【解决方案1】:

哎呀!! 问题在于 Oracle12c 方言。 我已经用 12cDialect (spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect) 更新了我的 application.properties。它正在工作。

注意:只需交叉检查您的 ODBC 驱动程序版本。如果它是旧的更新它。 [如果数据量大,推荐使用CLOB]

谢谢

【讨论】:

    猜你喜欢
    • 2013-06-01
    • 2012-07-08
    • 2014-09-20
    • 2017-08-29
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2014-08-09
    相关资源
    最近更新 更多