Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / wildfly, firebird - помогите подружить / 16 сообщений из 16, страница 1 из 1
25.08.2015, 14:19
    #39035652
AndreyDmt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
Решил потестить wildfly, выбрал последний - 9.0.1, собрал тестовый примерчик из jboss-tools подборки (он правда под Jboss 7.1,
но с помощью гуленья подправил его под 9 версию). В результате имеем мавеновский проект ear-приложения, с поддержкой
wildfly9 и richfaces. А, ну да - собраннный в еклипсе с установленными jboss-tools.
Суть тестового примера - одна форма с полями для ввода имени, почты, телефона, которые пишутся в БД по нажатию кнопки.
Плюс бантики типа типа чтения выбранной записи через рест-сервис. Но интересовала миенно работа с разными БД. Попробовал
по очереди настроить на все бд, которые есть под рукой. Oracle, postgresql - полёт нормальный.
Пришла очередь firebird. И вот тут начались непонятки, решить которые самостоятельно не смог. Собственно об этом и вопрос.
Сразу скажу, что с firebird работал мало и давно, поэтому конфиги надёргал из разных мест, может что наврал.
Исходные:

-- module.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.3" name="org.firebirdsql">
	<resources>
		<resource-root path="jaybird-2.2.8.jar"/>
	</resources>
	<dependencies>
		<module name="javax.api"/>
		<module name="javax.transaction.api"/>
		<module name="javax.resource.api"/>
	</dependencies>
</module>


-- persistence.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
        http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

	<persistence-unit name="wildflyrffirebird_pu" transaction-type="JTA">
		<jta-data-source>java:jboss/datasources/FirebirdDS</jta-data-source>
		<jar-file>wildfly-rf-ejb-9.0.1.jar</jar-file>

		<properties>
			<!-- Properties for Hibernate -->
			<property name="hibernate.dialect" value="org.hibernate.dialect.FirebirdDialect" />
			<property name="hibernate.hbm2ddl.auto" value="update" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="false" />
			<!-- Предупреждает об отсутствии этого параметра, поставил явно, дефолтное значение -->
			<property name="hibernate.search.lucene_version" value="LUCENE_CURRENT" />
		</properties>
	</persistence-unit>
</persistence>


-- project-ds.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd">

	<datasource jndi-name="java:jboss/datasources/FirebirdDS" pool-name="wildflyrf-firebird-pool" enabled="true">
		<connection-url>jdbc:firebirdsql:192.168.20.65:D:/DataBases/Firebird/cimbios.fdb</connection-url>
		<driver>firebird</driver>

		<connection-property name="lc_ctype">UTF-8</connection-property>
		<connection-property name="maxStatements">10</connection-property>
		<transaction-isolation>TRANSACTION_REPEATABLE_READ</transaction-isolation>

		<pool>
			<min-pool-size>1</min-pool-size>
			<max-pool-size>10</max-pool-size>
		</pool>
		<security>
			<user-name>SYSDBA</user-name>
			<password>masterkey</password>
		</security>

		<validation>
			<validate-on-match>false</validate-on-match>
			<background-validation>false</background-validation>
		</validation>

		<timeout>
			<idle-timeout-minutes>1</idle-timeout-minutes>
		</timeout>
		<statement>
			<share-prepared-statements />
		</statement>

	</datasource>
</datasources>


-
По поводу -ds.xml - вроде как рекомендуется прописывать в standalone.xml, но работает и так и так, поэтому оставил -ds.xml,
просто показалось для побаловаться удобнее.

Начальные условия эксперимента: цепляемся к БД, в которой нет требуемой таблицы. Структура таблицы следующая
(дёрнул скрипт из оракла, там она создалась автоматом):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE REGISTRANT (
  USER_ID       NUMBER(19)                      NOT NULL,
  USER_EMAIL    VARCHAR2(255 CHAR)              NOT NULL,
  USER_NAME     VARCHAR2(25 CHAR)               NOT NULL,
  PHONE_NUMBER  VARCHAR2(12 CHAR)               NOT NULL
);
CREATE UNIQUE INDEX UK_I3QGVDN5EFRRAJLO6TGPN7A0J ON REGISTRANT
(USER_EMAIL);
ALTER TABLE REGISTRANT ADD (
  PRIMARY KEY
 (USER_ID),
  CONSTRAINT UK_I3QGVDN5EFRRAJLO6TGPN7A0J
 UNIQUE (USER_EMAIL));


Приложение должно её создать, и благополучно потом сохранять данные с формы. При перезапуске приложения, таблица
находится, также благополучно пишем новые данные. Так и происходит в первых протестированных БД.
Что не так в firebird.
1. При первом запуске обнаруживается отсутствие таблицы, и идёт попытка её создать, но в каком виде!
Код: java
1.
Hibernate: create table HT_Registrant (user_id numeric(18,0) not null, hib_sess_id CHAR(36))


Это полный запрос! Вот откуда такие названия получились - могу только подозревать. И именно такая таблица и создаётся.
Причём на сколько я помню формат для цегого в виде numeric(18,0) - не самый родной для firebird. При этом должен как
выяснилось в последствии создаваться ещё и генератор HIBERNATE_SEQUENCE - тоже не создаётся.

Далее по логам всё же обнаруживается непорядок (гугление не помогло понять ошибку):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
2015-08-25 14:32:30,129 INFO  [org.hibernate.tool.hbm2ddl.SchemaUpdate] (ServerService Thread Pool -- 58) HHH000228: Running hbm2ddl schema update
2015-08-25 14:32:30,130 INFO  [org.hibernate.tool.hbm2ddl.SchemaUpdate] (ServerService Thread Pool -- 58) HHH000102: Fetching database metadata
2015-08-25 14:32:30,140 INFO  [org.hibernate.tool.hbm2ddl.SchemaUpdate] (ServerService Thread Pool -- 58) HHH000396: Updating schema
2015-08-25 14:32:30,147 INFO  [java.sql.DatabaseMetaData] (ServerService Thread Pool -- 58) HHH000262: Table not found: Registrant
2015-08-25 14:32:30,149 INFO  [java.sql.DatabaseMetaData] (ServerService Thread Pool -- 58) HHH000262: Table not found: Registrant
2015-08-25 14:32:30,151 INFO  [java.sql.DatabaseMetaData] (ServerService Thread Pool -- 58) HHH000262: Table not found: Registrant
2015-08-25 14:32:30,155 INFO  [java.sql.DatabaseMetaData] (ServerService Thread Pool -- 58) HHH000262: Table not found: hibernate_sequence
2015-08-25 14:32:30,157 ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] (ServerService Thread Pool -- 58) HHH000299: Could not complete schema update: org.hibernate.MappingException: org.hibernate.dialect.FirebirdDialect does not support pooled sequences
	at org.hibernate.dialect.Dialect.getCreateSequenceString(Dialect.java:965)
	at org.hibernate.dialect.Dialect.getCreateSequenceStrings(Dialect.java:923)
	at org.hibernate.id.enhanced.SequenceStructure.sqlCreateStrings(SequenceStructure.java:148)
	at org.hibernate.id.enhanced.SequenceStyleGenerator.sqlCreateStrings(SequenceStyleGenerator.java:435)
	at org.hibernate.cfg.Configuration.generateSchemaUpdateScriptList(Configuration.java:1309)
	at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:237)
	at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:203)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:522)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1859)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
	at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:425)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:849)
	at org.jboss.as.jpa.hibernate4.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44)
	at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:154)
	at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:117)
	at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:665)
	at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:182)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
	at org.jboss.threads.JBossThread.run(JBossThread.java:320)


Но при этом приложение нормально грузится, т.е. появляется сообщение об успешном деплое. Цепляемся, пытаемся схранить
данные - получаем сообщение об отсутствии таблицы.
2. Создаём таблицу, генератор руками, пергружаем приложение - вроде всё ок, всё работает. Но осадок остался. :)

Ну собственно просьба помочь разобраться со странным поведением в случае firebird.
...
Рейтинг: 0 / 0
25.08.2015, 15:14
    #39035712
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
Просто забудьте про существование hbm2ddl.
...
Рейтинг: 0 / 0
25.08.2015, 17:43
    #39035871
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
Совет конечно дельный, но к особенностям firebird не имеет отношения. Самостоятельная накатка ddl без знания особенностей может тут привести к непредсказуемым последствиям.
А особенность есть: максимальная длина индекса в ФБ составляет 1/4 размера страницы, и это в байтах (а буквы в utf-8 могут быть до 6 байт). Плюс для индексируемых строк надо отнять еще 9 байт. Поэтому очень важно знать page size для базы данных, так как из скрипта видно создание индекса на USER_EMAIL длиной 255. Диалект, надеюсь, третий?
И хорошо бы увидеть меппинг, а не результирующий ddl

2) связь module<->driver (в standalone.xml) установлена?
...
Рейтинг: 0 / 0
25.08.2015, 17:46
    #39035872
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
ivanraа буквы в utf-8 могут быть до 6 байтЮникод ограничен двадцать одним битом на кодовую точку (BMP и шестнадцать CMP), поэтому предельный размер всех UTF-вариантов - четыре байта на кодовую точку.
...
Рейтинг: 0 / 0
26.08.2015, 07:58
    #39036065
AndreyDmt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
ivanra,

И связь установлена, и диалект третий. И собственно я даже не против создавать структуру базы сам. Но убивает вот какой фокус:
1. Создаю генератор руками. Описанная ошибка (org.hibernate.dialect.FirebirdDialect does not support pooled sequences) исчезает. По буквам из ошибки собственно и видно, что ругается на sequences.
2. При этом таблицы создаются без ошибок, но почему две? По прейскуранту "ентити простое тестовое" - одна штука. Думал, может что пропустил. Но во первых полный шмон по проекту ничего не дал, во вторых в ранее тестируемых БД создавалась именно одна таблица. В firebird создаётся та что описана, плюс ещё какая то странность на два поля. Что за выкидыш - пытаюсь разобраться. Убивание этого придатка ведёт к его восстановлению при следующем запуске.
3. Но далее всё работает.
В общем заинтригован до крайности.
...
Рейтинг: 0 / 0
26.08.2015, 09:51
    #39036133
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
AndreyDmtВ общем заинтригован до крайности.

В hibernate вообще поддержка firebird сделана как-то через зад :)
Я правда, 7 лет назад с этим имел дело, но впечатлился.

1. Версию диалекта, что ли (забыл за давностью), оно прочитать не умело, надо было руками задавать. Я написал фикс в 2 строки, jar'ку у себя расположил, и отправил diff в качестве предложения. Да, тогда так надо было- svn, все дела. Через 5 лет мне пришёл ответ- мол ты чё, мужик, у нас же git, надо pull-request делать. Я уж и забыл к тому времени, что такое firebird...

2. Вообще он какой-то неприкаянный- там и jdbc драйвер-то писан одним человеком, не говоря уже про связку с hibernate.
Поэтому совет "не давай ему делать DDL"- лучший. Мало ли там какие баги ещё бегают...

PS: а какая таблица создаётся? Имя, поля? Как-нибудь с основной связано?
...
Рейтинг: 0 / 0
26.08.2015, 10:18
    #39036150
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
Basil A. Sidorovivanraа буквы в utf-8 могут быть до 6 байтЮникод ограничен двадцать одним битом на кодовую точку (BMP и шестнадцать CMP), поэтому предельный размер всех UTF-вариантов - четыре байта на кодовую точку.
Речь идет об особенностях firebird, там 6 байт на символ pagesize 4096: допускает создание индекса по UTF8-полю только до varchar(169). Why ? , да и в википедии тоже.

AndreyDmt,
сложно обсуждать MappingException, не видя самого меппинга. Из лога только видно, что не хватает таблицы Registrant и таблицы hibernate-генераторов hibernate_sequence, не надо её путать с firebird-генератором
Я лично делал проект, работавший на firebird и mysql, особых проблем не было.
Если хочется разобраться, то надо показать меппинг. Также неплохо бы увидеть генерируемый ddl, для этого надо в standalone.xml настроить соответствующую категорию логгера (subsystem xmlns="urn:jboss:domain:logging:1.1"):
Код: xml
1.
2.
3.
            <logger category="log4j.logger.org.hibernate.tool.hbm2ddl">
                <level name="DEBUG"/>
            </logger>


ну и чтобы не ломать глаза в persistence.xml
Код: xml
1.
<property name="hibernate.format_sql" value="true" />
...
Рейтинг: 0 / 0
26.08.2015, 12:14
    #39036244
AndreyDmt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
Alexey Tomin,
Левая табличка такая
Код: plsql
1.
2.
3.
4.
CREATE TABLE HT_REGISTRANT (
    USER_ID      NUMERIC(18,0) NOT NULL,
    HIB_SESS_ID  CHAR(36)
);
...
Рейтинг: 0 / 0
26.08.2015, 13:20
    #39036325
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
AndreyDmtЛевая табличка такая
Код: plsql
1.
2.
3.
4.
CREATE TABLE HT_REGISTRANT (
    USER_ID      NUMERIC(18,0) NOT NULL,
    HIB_SESS_ID  CHAR(36)
);



А это поможет?
...
Рейтинг: 0 / 0
26.08.2015, 13:40
    #39036355
AndreyDmt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
Alexey Tomin,

Ну что это временная таблица от хибернейта я по буквам догадался. Не догадался я почему в двух первых БД этой таблицы нет, а вот в firebird есть. Исключительная таблица для конкретной БД? А когда и дальше сломалось...
...
Рейтинг: 0 / 0
26.08.2015, 14:17
    #39036395
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
AndreyDmt,
пока что найти ошибку в генерации может только телепат. Это что угодно - не тот размер страницы БД, ключевое слово, неподдерживаемый тип данных, и т.д.
1) нужен меппинг
2) желательно иметь генерируемый скрипт. Для этого даже можно завести отдельный файл в логах (hbm2ddl.log):
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
            <periodic-rotating-file-handler name="HBM2DDL">
                <formatter>
                    <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
                </formatter>
                <file relative-to="jboss.server.log.dir" path="hbm2ddl.log"/>
                <suffix value=".yyyy-MM-dd"/>
                <append value="true"/>
            </periodic-rotating-file-handler>
            <logger category="org.hibernate.tool.hbm2ddl">
                <level name="DEBUG"/>
                <handlers>
                    <handler name="HBM2DDL"/>
                </handlers>
            </logger>


(выше я ошибся с категорией, конечно же "org.hibernate.tool.hbm2ddl"
...
Рейтинг: 0 / 0
26.08.2015, 14:24
    #39036400
AndreyDmt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
ivanra,

До маппинга похоже дело и не доходит, до создания непостредственно таблиц не дошло,
ломается при попытке создать талицу (ли?) hibernate_sequence, в логе практически ничего нового.
Вот кусок с непосредственно с созданием объектов:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
2015-08-26 15:20:02,553 DEBUG [org.hibernate.internal.SessionFactoryImpl] (ServerService Thread Pool -- 58)
Instantiated session factory
2015-08-26 15:20:02,553 DEBUG [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (ServerService Thread Pool -- 58)
wildflyrf-firebird-pool: getConnection(null, WrappedConnectionRequestInfo@27e9c917[userName=SYSDBA]) [0/10]

-- Ну вот тут сразу после инициализации левая табличка и создаётся

2015-08-26 15:20:02,559 DEBUG [org.hibernate.SQL] (ServerService Thread Pool -- 58) 
    create table HT_Registrant (user_id numeric(18,0) not null, hib_sess_id CHAR(36))
2015-08-26 15:20:02,559 INFO  [stdout] (ServerService Thread Pool -- 58) Hibernate: 
2015-08-26 15:20:02,559 INFO  [stdout] (ServerService Thread Pool -- 58)
    create table HT_Registrant (user_id numeric(18,0) not null, hib_sess_id CHAR(36))

2015-08-26 15:20:02,576 DEBUG [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (ServerService Thread Pool -- 58) wildflyrf-firebird-pool: returnConnection(2ba9cb81, false) [0/10]

-- тут чего то поскипано, далее

2015-08-26 15:20:02,590 DEBUG [org.hibernate.cfg.Configuration] (ServerService Thread Pool -- 58) Processing foreign key constraints
2015-08-26 15:20:02,595 INFO  [java.sql.DatabaseMetaData] (ServerService Thread Pool -- 58) HHH000262: Table not found: Registrant
2015-08-26 15:20:02,597 DEBUG [org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory] (ServerService Thread Pool -- 58)
  Setting dialect [org.hibernate.dialect.FirebirdDialect]
2015-08-26 15:20:02,598 INFO  [java.sql.DatabaseMetaData] (ServerService Thread Pool -- 58) HHH000262: Table not found: Registrant
2015-08-26 15:20:02,600 INFO  [java.sql.DatabaseMetaData] (ServerService Thread Pool -- 58) HHH000262: Table not found: Registrant
2015-08-26 15:20:02,600 DEBUG [org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory] (ServerService Thread Pool -- 58)
  Setting dialect [org.hibernate.dialect.FirebirdDialect]

-- А во тут идёт попытка создать (почему то) таблицу последовательнсти, хотя опять же в двух других БД создавалась
-- непосредственно последовательность (генератор) с таким именем. Ну похоже до создания ddl запроса дело не доходит.

2015-08-26 15:20:02,602 INFO  [java.sql.DatabaseMetaData] (ServerService Thread Pool -- 58) HHH000262: Table not found: hibernate_sequence
2015-08-26 15:20:02,604 ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] (ServerService Thread Pool -- 58) HHH000299: Could not complete schema update: org.hibernate.MappingException: org.hibernate.dialect.FirebirdDialect does not support pooled sequences
	at org.hibernate.dialect.Dialect.getCreateSequenceString(Dialect.java:965)


И как я уже ранее написал, что если создать руками генератор (а всё таки не таблицу), то нормально и другие объекты создаются. Т.е. хибернейт хочет всё таки найти генератор
...
Рейтинг: 0 / 0
26.08.2015, 14:38
    #39036417
AndreyDmt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
ivanra,

Пр категорию я догадался, поправил, но вот дебажных сообщений от hbm2ddl не появилось. Включал дебаг глобально. Попробовал по приведённому конфигу: файл получил на 10 строчек - та же инфа, тоже без подробностей. Как говорится - сам удивлён. Ещё одна заморочка
...
Рейтинг: 0 / 0
26.08.2015, 15:39
    #39036481
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
AndreyDmt,
Применяя телепатию, пришел к выводу, что в меппинге видимо стоит
Код: java
1.
@GeneratedValue(strategy = GenerationType.SEQUENCE)


Поскольку действительно FirebirdDialect не поддерживает pooled sequences, возможны 2 выхода:
1) перед генерацией схемы вручную создать генератор HIBERNATE_SEQUENCE
2) поменять на GenerationType.AUTO или какой-нибудь другой тип

как вариант - создать собственный диалект, наследник от org.hibernate.dialect.FirebirdDialect, там переопределить метод getCreateSequenceString(String sequenceName, int initialValue, int incrementSize)

после этого смотреть, какие выдаст еще ошибки
...
Рейтинг: 0 / 0
27.08.2015, 16:07
    #39037652
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
AndreyDmt,
если очень хочется использовать firebird, ничего не меняя в метаданных, то можно в проект добавить такой класс
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class PatchedFirebirdDialect extends FirebirdDialect {
	@Override
	protected String getCreateSequenceString(String sequenceName, int initialValue, int incrementSize) throws MappingException {
		if (initialValue==1 && incrementSize==1) 
			return getCreateSequenceString(sequenceName);
		return super.getCreateSequenceString(sequenceName, initialValue, incrementSize);
	}
}


в persistence.xml, естественно, ссылаться на него, а не на org.hibernate.dialect.FirebirdDialect
По-хорошему, данный код надо было бы добавить непосредственно в org.hibernate.dialect.Dialect, ено, видимо, разработчики hibernate используют firebird нечасто, раз этого до сих пор это не было сделано
...
Рейтинг: 0 / 0
28.08.2015, 07:52
    #39038007
AndreyDmt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wildfly, firebird - помогите подружить
ivanra,

Спасибо за Ваши советы. На счёт "очень хочется использовать" - как я уже писал в начале, это у меня было тестовое мероприятие. Ещё пару баз потестю, и успокоюсь. А решает как всегда заказчик, и кстати firebird - не самая любимая база при работе с java (я так думаю!). А Ваши посты я себе в подборочку соберу по теме: во первых они внесли некоторое просветление, а во вторых - может и пригодятся в жизни. А что, а вдруг...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / wildfly, firebird - помогите подружить / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]