我正在尝试让实体在 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/