Критерии гибернации Запросите оператор на CLOB (Postgres 8.4) - PullRequest
2 голосов
/ 29 июля 2011

У меня запрос критерия не работает. Вот модель:

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

Этот запрос будет выполнен hibernate (из журналов):

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 он работает нормально, просто с оператором like в CLOB он не работает. Это проблема Hibernate или Postgres? Или этот тип запроса невозможен для CLOB?

Я использую:

  • Hibernate 3.6.3
  • PostgreSQL 8.4.8
  • PostgreSQL 8.3 JDBC3 с SSL (сборка 603)

Есть идеи?

Обновление: Я провел дополнительное расследование:

  • Приведенная выше аннотация правильно создает text postgres тип
  • Если я запускаю SQL-запрос, который выводит hibernate, он работает.

BR

1037 * помощи обновления *

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Попробовав, я нашел следующее решение, которое сработало для меня. Мне пришлось добавить следующую аннотацию, и теперь она работает:

@Type(type = "org.hibernate.type.TextType")
0 голосов
/ 29 июля 2011

Это не представляется возможным, поскольку CLOB полностью поддерживаются в вашей версии Postgres: http://www.postgresql.org/docs/8.4/interactive/unsupported-features-sql-standard.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...