HOBON Criteria查询类似于CLOB上的运算符(Postgres 8.4)

时间:2011-07-29 12:46:18

标签: java hibernate postgresql jpa jpa-2.0

我有一个标准查询没有真正起作用。这里的模型:

@Entity
public class Flaw extends BaseEntity implements Serializable {
    ...
    @Lob
    @Basic(fetch=FetchType.LAZY)
    private String text;
    ...

此查询将由hibernate(来自Logs)执行:

Hibernate: 
    select
        ...
        flaw0_.text as col_7_0_,
        ...
    from
        Flaw flaw0_,
    where
        ...
        and (
            flaw0_.text like ?
        ) 
    order by
        flaw0_.text desc

然后我得到以下StackTrace:

3171 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 0, SQLState: 42883
3171 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ERROR: operator does not exist: text ~~ bigint
3198 [main] INFO org.hibernate.impl.SessionFactoryImpl - closing

使用oder属性它工作正常,只是CLOB上的like运算符不起作用。这是Hibernate还是Postgres问题?或者这种类型的查询在CLOB上是不可能的?

我正在使用:

  • Hibernate 3.6.3
  • PostgreSQL 8.4.8
  • 带有SSL的PostgreSQL 8.3 JDBC3(版本603)

任何想法?

更新 我做了一些进一步的调查:

  • 上述注释正确创建了text postgres类型
  • 如果我运行sql查询,则打开hibernate,它可以工作。

BR

勒 -

2 个答案:

答案 0 :(得分:1)

尝试后,我发现以下解决方案对我有用。我必须添加以下注释,现在它可以工作:

@Type(type = "org.hibernate.type.TextType")

答案 1 :(得分:0)

似乎不可能,因为您的Postgres版本完全支持CLOB:http://www.postgresql.org/docs/8.4/interactive/unsupported-features-sql-standard.html