【问题标题】:jpa: LIKE on a Lob fieldjpa:LIKE 在 Lob 字段上
【发布时间】:2017-06-23 03:25:45
【问题描述】:

我有一个带有标记为 Lob 的字符串字段的实体:

@Lob
public String getJson() {
    return json;
}

我需要使用 jpql 对该字段进行类似条件的查询。我不能使用本机查询,因为代码必须同时兼容 Oracle 和 Postgresql。我正在使用休眠作为 jpa 实现。 即使翻译正确,该查询也不会返回任何内容(我在 oracle 的 v$_sqlarea 上进行了查询以查看它及其参数)。在 squirrel 上执行翻译后的查询效果很好。

我是否试图在 lob 字段上执行错误/不允许的操作? 有没有人成功地做同样的事情?

【问题讨论】:

  • 日志是否显示任何捕获的错误?您是否为这两个数据库使用最新的 JDBC 驱动程序以防驱动程序支持问题?
  • 没有错误。它只是不返回任何记录。我正在使用休眠 4.0.0 和 weblogic 12.1.3,jpa 2.0

标签: java oracle postgresql hibernate jpa


【解决方案1】:

支持在 @Lob 注释字段上使用 LIKE 谓词运算符可能会受到影响,具体取决于您使用的方言。这是因为它取决于用于将CLOB 数据映射到数据库列的数据类型。

例如,SQL Server 方言可能会将带注释的 String 字段映射到 TEXT 数据类型,虽然已弃用,但确实允许使用 LIKE 运算符。但另一种方言可能将该字段映射到数据库不允许 LIKE 运算符使用的数据类型。

其他方言可能允许对CLOB 列进行类似LIKE 的操作;然而,他们通过特殊的数据库特定功能来做到这一点。在这些情况下,如果该要求适用于您的方言,您必须使用这些功能来支持您的搜索。

【讨论】:

  • 我使用的是 Oracle 方言或 Postgresql 方言。两个数据库都支持 Clob 字段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 2012-07-19
  • 2011-04-23
  • 2010-10-06
  • 2019-05-05
相关资源
最近更新 更多