Определите столбец JPA как LOB на основе базы данных

#java #hibernate #jpa #lob

#java #переход в спящий режим #jpa #подбросить

Вопрос:

В нашем приложении Spring мы используем Spring JPA. Мы определили объект, подобный этому:

 @Entity
public class Cat{
    // ....

    //@Lob <-- only if OracleDB is used
    @Column
    private String description;
}
  

Приложение может использоваться с различными базами данных. Поскольку большинство баз данных способны обрабатывать даже большие тексты внутри VARCHAR столбца, мы решили использовать только столбец по умолчанию VARCHAR для хранения описания.

Но теперь клиент хочет использовать свою базу данных Oracle. Поскольку существует сумасшедшее ограничение длины на VARCHAR тип, мы должны использовать CLOB в схеме базы данных.

Теперь главный вопрос заключается в том, есть ли возможность пометить соответствующие поля в объектах JPA как Lob, но только если во время выполнения используется диалект Oracle.

Комментарии:

1. Не могли бы вы предоставить список баз данных, которые использует ваше приложение.

2. Postgres в разных версиях, H2 и Oracle (новая). У нас также есть несколько используемых баз данных AWS (точное название пока не указано).

3.Кстати, длина oracle VARCHAR2 может быть увеличена до 32767 предела в байтах, включив MAX_STRING_SIZE свойство.