Спящий режим с HSQL - таблицы не создаются с помощью hbm2ddl

Я пытаюсь запустить тесты базы данных с помощью HSQLDB (режим в памяти), но hbm2ddl не создает структуры. Он ведет себя так, как будто использовался неправильный диалект SQL, но журнал показывает, что диалект установлен правильно:

HCANN000001: Hibernate Commons Annotations {4.0.4.Final}
HHH000412: Hibernate Core {4.3.1.Final}
HHH000206: hibernate.properties not found
HHH000021: Bytecode provider name : javassist
Creating new JDBC DriverManager Connection to [jdbc:hsqldb:mem:sample]
HHH000400: Using dialect: org.hibernate.dialect.HSQLDialect
HHH000399: Using default transaction strategy (direct JDBC transactions)
HHH000397: Using ASTQueryTranslatorFactory
HV000001: Hibernate Validator 5.1.0.Final
HSEARCH000034: Hibernate Search 4.5.0.Final
HHH000227: Running hbm2ddl schema export
HHH000389: Unsuccessful: create table .dictionary (id bigint generated by default as identity (start with 1), created_on timestamp not null, status varchar(255) not null, updated_on timestamp not null, version_created_by varchar(250), description varchar(250) not null, key varchar(100) not null, scope varchar(100), parent_id bigint, primary key (id))
ERROR o.h.tool.hbm2ddl.SchemaExport - unexpected token: TABLE : line: 2

Позже, при построении других операторов SQL в тестах, Hibernate выдает очень забавные исключения, например:

java.sql.SQLSyntaxErrorException: unexpected token: FROM required: FROM

Я действительно не знаю, что вызывает такое поведение, особенно. эти журналы подтверждают, что диалект SQL соответствует используемой базе данных.


person MaDa    schedule 31.07.2014    source источник
comment
Ммм, глядя на часть показанного журнала, я вижу, что в имени таблицы есть точка? Я имею в виду, может ли имя таблицы начинаться с точки :-)?   -  person Serhiy    schedule 31.07.2014
comment
Не уверен, но попробуйте таблицу имен без точки. У вас есть - 'table .dictionary', попробуйте назвать ее _dictionary   -  person birya    schedule 31.07.2014


Ответы (1)


Оказывается, в базе данных без схемы (так же, как HSQL в памяти) вы НЕ МОЖЕТЕ установить свойство Hibernate.

<prop key="hibernate.default_schema">${hibernate.default_schema}</prop>

каким-либо образом (оставление его пустым считается его установкой).

Моя установка была создана для производства и тестирования, свойство hibernate.default_schema было установлено на имя схемы или оставлено пустым в соответствующих средах.

Спасибо за подсказки, которые помогли мне встать на путь.

person MaDa    schedule 31.07.2014