2012-05-26 2 views
1

У меня есть приложение, которое использует hibernate для генерации таблиц (поскольку мое приложение все еще находится в разработке) для HSQL db. В моей модели домена я поставилHibernate или hsql не учитывает длину столбца

@Basic 
@Column(name = "about", length = 10) 
private String about; 

Когда я открываю БД с помощью DbVisualizer я могу видеть, что все настроено правильно, за исключением он не работает мой столбец принимает значения, путь длиной более 10 символов. Когда я пытаюсь запустить запрос вручную в DBVisualier, он терпит неудачу, как он должен, но спящий режим позволяет ему работать.

Также очень странно, когда я использую файл (вместо памяти db), чтобы я мог видеть структуру db, и я указываю на DBVisualizer, это как-то разрывает соединение, поэтому мои изменения из Hibernate не видны из этот момент. Все еще работает, я просто не вижу изменений в DBVisualizer, но могу в приложении.

У любого есть идеи по поводу этого странного поведения?

веселит все

UPDATE

конфигурации Hibernate

<property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property> 
    <property name="hibernate.connection.url">jdbc:hsqldb:mem:test</property> 
    <property name="hibernate.connection.username">sa</property> 
    <property name="hibernate.connection.password"></property> 
    <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property> 
    <property name="hbm2ddl.auto">create</property> 
    <property name="sql.enforce_strict_size">true</property> 

ответ

4

Ваша проблема, вероятно, происходит из-за ограничений в HSQLDB, описанной в the documentation:

HSQLDB базы данных изначально создаются в устаревший режим, который do es обеспечить размер и точность столбцов. Вы можете установить свойство: sql.enforce_strict_size = true, чтобы включить эту функцию. Когда установлено это свойство , применяются любые размер и точность столбцов для цифровых и символьных типов (CHARACTER и VARCHAR). Используйте команду , SET PROPERTY "sql.enforce_strict_size" ИСТИНА один раз до , определяющий таблицы.

(курсив мой)

+0

Я добавил, что, но это ничего не делать. Я все еще могу добавить больше текста, чем должен. Размер применяется, если я делаю это с помощью инструмента, такого как DBVisualizer, и я пишу запрос, но если я использую спящий режим, это не –

+0

http://www.hsqldb.org/doc/1.8/guide/ch09.html#datatypes -section говорит, что это свойство должно быть установлено сразу после создания базы данных перед добавлением данных. Убедитесь, что вы следовали этому правилу. –

+0

Я только что добавил свойство в файле конфигурации, поэтому, я думаю, он должен вызываться, когда он должен. Также почему DBVisulisator работает с длиной на месте и спящий не: S Возможно ли, что DBV обеспечивает это, а не HSQL? –

Смежные вопросы