java - 使用 Oracle 和 PostgreSQL 的长文本列 hibernate

标签 java spring oracle postgresql hibernate

我正在尝试让实体在 Spring Boot (1.4.4) 应用程序中使用 Oracle (11.2) 和 PostgreSQL(9.4)。

我的实体包含一个长文本字段(超过 4000 个字符)。 在 Oracle 中合适的数据类型是 CLOB,在 PostgreSQL 中对应的类型是 TEXT。

我能够让它与 PostgreSQL 一起工作

@Column(name = "LONG_TEXT", columnDefinition="TEXT")
private String longText;

但是,由于 CLOB 需要 @Lob 注释,Oracle 在 hibernate 验证阶段会失败。

以下代码适用于 Oracle

@Lob
@Column(name = "LONG_TEXT")
private String longText;

但是这次从 PostgreSQL 读取时失败,出现以下异常:

PSQLException: Large Objects may not be used in auto-commit mode

Stack overflow suggests在事务中执行查询。忽略在选择查询中调用事务的可疑要求,将 @Transactional 添加到查询方法没有帮助。

欢迎任何想法。

最佳答案

我们得出的解决方案是采用@Lob 和@Transactional 方法。

主要问题是 @Transactional 注释的放置,导致 PSQLException。一旦修复,我们就可以使用这两种类型的数据库。

关于java - 使用 Oracle 和 PostgreSQL 的长文本列 hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42930547/

相关文章:

java - 如何处理 JAX-RS 中的意外异常

oracle - APPROX_COUNT_DISTINCT 如何提供比 Oracle 中的计数函数更好的性能?

oracle - 在 Oracle 上选择很多列但不是全部

java - 使用 implements Serializable 时在类型 com.sun.proxy.$Proxy127 上找不到属性

java Selector 是异步或非阻塞架构

java - 日历方法 getTimeInMillis() 返回错误值

java - 适用于不同方向 Android 的新 Activity

spring - Roo 生成的方面不再位于类路径中

REGEXP_SUBSTR : Need more precise regex code

java - 如何使用亚马逊的 EMR 在 CLI 中使用自定义 jar 指定 mapred 配置和 java 选项?