Bor*_*ris 6 java oracle postgresql spring 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;
Run Code Online (Sandbox Code Playgroud)
然而,Oracle 在休眠验证阶段会失败,因为 CLOB 需要 @Lob 注释。
以下代码适用于 Oracle
@Lob
@Column(name = "LONG_TEXT")
private String longText;
Run Code Online (Sandbox Code Playgroud)
然而,这次从 PostgreSQL 读取时失败,出现以下异常:
PSQLException:大对象不能在自动提交模式下使用
堆栈溢出建议在事务中执行查询。忽略在选择查询中调用事务的可疑要求,将 @Transactional 添加到查询方法并没有帮助。
任何想法都非常受欢迎。
我们找到的解决方案是采用@Lob 和@Transactional 方法。
主要问题是 @Transactional 注释的放置,导致 PSQLException。一旦修复,我们就可以使用这两种类型的数据库。
| 归档时间: |
|
| 查看次数: |
5328 次 |
| 最近记录: |