powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate не создает сиквенсы когда они существуют в другой схеме.
23 сообщений из 23, страница 1 из 1
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39826836
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня!

Есть обычное Hibernate вебприложение , база данных Postgresql 11, 64 битная, с двумя разными схемами (под каждый инстанс приложения своя схема).

У меня проблема: Когда я запускаю приложение, оно создает необходимые таблицы и сиквенсы в указанной схеме нормально, приложение работает нормально проблем с данными нет.

Но когда запускаю второй инстанс этого же приложения (но с другой схемой), то таблицы создаются, а сиквенсы не создаются и приложение становится нерабочим.
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39826848
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max aka max,
если взять не схему а базу в постгри то нормально?
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39826866
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharpmax aka max,
если взять не схему а базу в постгри то нормально?
что Вы имеете ввиду ?
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39826910
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max aka max,
По умолчанию принято базу делать руками а не генерировать.
Берете IDE для постгри, открываете.
Там видны веточки БД и веточки Shema.
Вот две независимых модели сделайте в разных БД.
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39826960
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharpmax aka max,
По умолчанию принято базу делать руками а не генерировать.
Берете IDE для постгри, открываете.
Там видны веточки БД и веточки Shema.
Вот две независимых модели сделайте в разных БД.

Вы бы еще выложили скрины как создавать запросы CREATE TABLE...
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39826966
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max aka max, включи детальное логгирование Hibernate как в примере здесь

https://www.mkyong.com/hibernate/how-to-configure-log4j-in-hibernate-project/

Вторая схема не создаётся потому-что не срабатывает какой-то condition. Возможно лезет ошибка.

Посмотри также видео-лекцию Николай Алименков — Сделаем Hibernate снова быстрым
там есть много информации по тонкой настройке логгеров.
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39826968
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonmax aka max, включи детальное логгирование Hibernate как в примере здесь

https://www.mkyong.com/hibernate/how-to-configure-log4j-in-hibernate-project/

Вторая схема не создаётся потому-что не срабатывает какой-то condition. Возможно лезет ошибка.

Посмотри также видео-лекцию Николай Алименков — Сделаем Hibernate снова быстрым
там есть много информации по тонкой настройке логгеров.

Спасибо, покопаюсь, я пока новичок в хибернете
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39826972
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonВторая схема не создаётся потому-что не срабатывает какой-то condition. Возможно лезет ошибка.

логирование включено на максимум (info), схему я создаю сам вручную, а все остальное создается DDL, ошибок не намечаются, в логе первого инстанса присутствуют CREATE SEQUENCE для указанных полей, а при запуске второго инстанса этого нету, хотя это одно и то же приложение.

Может в хибернете имеется какое нибудь кэширование при запуске DDL ?
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39826973
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
max aka max,

вернее, запоминание истории, что он создав для первой схемы сиквенсы, запоминает и для второго не создает.
обе схемы отличаются от public , сиквенс в первой схеме создается правильно (в определении идентификационного поля ссылается именно на сиквенс из своей схемы, и это нормально)
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39826974
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там есть логика. Что хибер по умолчанию все сиквенсы берет из специальной прикладной таблички в схеме
если не указано иной способ их получения.

Сравни внимательно две схемы и ты увидишь.
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39826981
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonТам есть логика. Что хибер по умолчанию все сиквенсы берет из специальной прикладной таблички в схеме
если не указано иной способ их получения.

Сравни внимательно две схемы и ты увидишь.

Прилагаю лог запуска Apache Tomcat. https://filebin.net/sxfsl5z0bqil331i/catalina.zip?t=wa1mhtji (2.4 метров, сюда несмог приложить, ограничение 1,5 кб)

В папке tomcat/webapps имеются 2 приложения (второе копия первого, отличается лишь файл настройки базы данных, company1 и company2)
При запуске томката, начиная со строки 34047 - сразу же после запроса alter table company1.team_topic add constraint UK_m37ns7lt7pugbdunnaxmfh99b unique (import_id) - можно увидеть что присутствуют запросы CREATE SEQUENCE для всех нужных полей, берем этот запрос меняв company1 на company2 переходим на строку 392998, как видим тут нет CREATE SEQUENCE для второй схемы. Следовательно и в бд в company1 существуют сиквенсы, а во второй company2 схеме их нет.

p.s. если файл лога не качается, могу доставить другим удобным Вам способом.
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39826999
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложи лучше в github.
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39827002
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonВыложи лучше в github.
Лог без архива довольно большой (121 метров), не могу выложить на гитхаб http://ipic.su/aC1R6.jpg,
если хотите сюда ссылку прикручу на текстовый формат лога https://filebin.net/81icyj0aprtj8apg/catalina.log?t=jfegaml6
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39827005
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дружище. Лично мне твой лог не нужен. Он нужен этому форуму чтобы тебя спасать.

И 120 мегабайт тоже не нужно. Постарайся вырезать grep-ом или чем угодно только те сообщения
которые относятся к механизмама хибернейт. Это не сложно сделать по имени логгера.

Попробуй у тебя получится. Я верю.
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39827011
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДружище. Лично мне твой лог не нужен. Он нужен этому форуму чтобы тебя спасать.

И 120 мегабайт тоже не нужно. Постарайся вырезать grep-ом или чем угодно только те сообщения
которые относятся к механизмама хибернейт. Это не сложно сделать по имени логгера.

Попробуй у тебя получится. Я верю.
Смог оформить вот так
Код: plsql
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar

запуск первого инстанса приложения COMPANY1
2019-06-15 17:20:48.979 DEBUG 8935 --- [ost-startStop-1] com.axelor.db.JpaModule                  : Configuring database...
2019-06-15 17:20:50.295  INFO 8935 --- [ost-startStop-1] com.axelor.app.AppModule                 : Configuring app modules...

загрузка модулей...
2019-06-15 17:20:54.824 DEBUG 8935 --- [pool-2-thread-1] com.axelor.db.JpaScanner                 : Searching for entity classes...
2019-06-15 17:20:54.825 DEBUG 8935 --- [pool-2-thread-2] com.axelor.db.JpaScanner                 : Searching for repository classes...
2019-06-15 17:20:54.826 DEBUG 8935 --- [pool-2-thread-3] com.axelor.db.JpaScanner                 : Searching for value enum classes...
2019-06-15 17:20:55.422 DEBUG 8935 --- [pool-2-thread-3] com.axelor.db.JpaScanner                 : Value enum classes found: 7
2019-06-15 17:20:55.835 DEBUG 8935 --- [pool-2-thread-2] com.axelor.db.JpaScanner                 : Repository classes found: 590
2019-06-15 17:21:11.804 DEBUG 8935 --- [ost-startStop-1] org.hibernate.SQL                        : create table company1.account_account (id int8 not null, archived boolean, import_id varchar(255), import_origin varchar(255), version int4, created_on timestamp, updated_on timestamp, analytic_distribution_authorized boolean, analytic_distribution_required_on_invoice_lines boolean, analytic_distribution_required_on_move_lines boolean, attrs jsonb, code varchar(255) not null, is_tax_authorized_on_move_line boolean, is_tax_required_on_move_line boolean, label varchar(255), name varchar(255) not null, reconcile_ok boolean, use_for_partner_balance boolean, created_by int8, updated_by int8, account_type int8, company int8, parent_account int8, primary key (id))

здесь идет создание всех таблиц и индексов для них

2019-06-15 17:21:40.084 DEBUG 8935 --- [ost-startStop-1] org.hibernate.SQL                        : create index team_topic_name_IDX on company1.team_topic (name)
2019-06-15 17:21:40.092 DEBUG 8935 --- [ost-startStop-1] org.hibernate.SQL                        : create index team_topic_team_IDX on company1.team_topic (team)
2019-06-15 17:21:40.099 DEBUG 8935 --- [ost-startStop-1] org.hibernate.SQL                        : alter table company1.team_topic drop constraint if exists UK_m37ns7lt7pugbdunnaxmfh99b
2019-06-15 17:21:40.100 DEBUG 8935 --- [ost-startStop-1] org.hibernate.SQL                        : alter table company1.team_topic add constraint UK_m37ns7lt7pugbdunnaxmfh99b unique (import_id)

создание сиквенсов
2019-06-15 17:21:40.108 DEBUG 8935 --- [ost-startStop-1] org.hibernate.SQL                        : create sequence company1.account_account_chart_seq start 1 increment 1

дальше пойдет заполнение первичными данными
2019-06-15 17:25:51.920 DEBUG 8935 --- [ost-startStop-1] org.hibernate.SQL                        : update company1.auth_user set archived=?, import_id=?, import_origin=?, version=?, created_by=?, created_on=?, updated_by=?, updated_on=?, activate_on=?, active_company=?, active_team=?, app_permissions=?, blocked=?, code=?, electronic_signature=?, email=?, employee=?, expires_on=?, full_name=?, group_id=?, home_action=?, i_calendar=?, image=?, language=?, name=?, no_help=?, partner=?, password=?, receive_emails=?, send_email_upon_password_change=?, single_tab=?, theme=?, today=?, use_signature_for_quotations=?, use_signature_for_stock=?, workshop_stock_location=? where id=? and version=?
2019-06-15 17:25:51.924  INFO 8935 --- [ost-startStop-1] com.axelor.web.AppInitializer            : Ready to serve...


запуск второго инстанса COMPANY2

создание таблиц

2019-06-15 17:26:24.286 DEBUG 8935 --- [ost-startStop-1] org.hibernate.SQL                        : create table company2.account_account (id int8 not null, archived boolean, import_id varchar(255), import_origin varchar(255), version int4, created_on timestamp, updated_on timestamp, analytic_distribution_authorized boolean, analytic_distribution_required_on_invoice_lines boolean, analytic_distribution_required_on_move_lines boolean, attrs jsonb, code varchar(255) not null, is_tax_authorized_on_move_line boolean, is_tax_required_on_move_line boolean, label varchar(255), name varchar(255) not null, reconcile_ok boolean, use_for_partner_balance boolean, created_by int8, updated_by int8, account_type int8, company int8, parent_account int8, primary key (id))

создание индексов

2019-06-15 17:26:35.193 DEBUG 8935 --- [ost-startStop-1] org.hibernate.SQL                        : alter table company2.account_analytic_account add constraint UK_flgpjimyp863kf3n0rn3w0dwe unique (code, name, analytic_axis)
2019-06-15 17:26:35.201 DEBUG 8935 --- [ost-startStop-1] org.hibernate.SQL                        : alter table company2.account_analytic_account drop constraint if exists UK_2wcyk0kbps6ppf422cm7ipsmr

заполнение первичными данными

2019-06-15 17:27:00.431 ERROR 8935 --- [ost-startStop-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: relation "company2.auth_user_seq" does not exist
  Position: 17

2019-06-15 17:27:00.462  INFO 8935 --- [ost-startStop-1] com.axelor.web.AppInitializer            : Ready to serve...
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39827015
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max aka maxВы бы еще выложили скрины как создавать запросы CREATE TABLE...я тебя первый раз вижу.
Раз ты не врубился как создать хибером отдельную базу то подумал что ты джун в субд.
Кто тебя знает.
Уже бы попробовал и ответил.
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39827019
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видишь во 2 инстансе есть ругательство.

Код: java
1.
2019-06-15 17:27:00.431 ERROR 8935 --- [ost-startStop-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: relation "company2.auth_user_seq" does not exist



Нету таблички auth_user_seq.

Создай ее вручную. Как про..бал - непоянто. Лень разбирать. Просто создай и скрипт пойдет дальше.
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39827020
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ну вроде это и есть его вопрос. Почему сиквенс auth_user_seq не создается.
Боюсь что ему базу создавать нужно, а не схему. Это не оракл.
Имхо
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39827022
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пускай автор поищет в исходниках auth_user_seq. Переименует в auth_user_seq2. Может прокатит.
Может одноимённый объект уже существует. Может в целевой БД места нет. Может прав нет.
Да много чего может быть.

Вот может пригодится
https://thoughts-on-java.org/jpa-generate-primary-keys/
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39827028
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вездесущий Баелдунг уже накрапал кучу рукописей на тему сабжа.

https://www.baeldung.com/hibernate-identifiers
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@Entity
public class Department {
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, 
      generator = "table-generator")
    @TableGenerator(name = "table-generator", 
      table = "dep_ids", 
      pkColumnName = "seq_id", 
      valueColumnName = "seq_value")
    private long depId;
 
    // ...
}
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39827036
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharpmax aka maxВы бы еще выложили скрины как создавать запросы CREATE TABLE...я тебя первый раз вижу.
Раз ты не врубился как создать хибером отдельную базу то подумал что ты джун в субд.
Кто тебя знает.
Уже бы попробовал и ответил.
maynotВот вездесущий Баелдунг уже накрапал кучу рукописей на тему сабжа.

они все создаются через DDL, если в настройках укажу две отдельных баз, то все норм работает, дело в том что просто вторая копия одного и того же приложения с разными схемами не работает, а копий может быть сколько угодно, в каждом инстансе не буду же менять auth_seq_{N}.

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

ладно, всем спасибо, вопрос закрыт до "лучших времен"
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39827040
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max aka maxпросто вторая копия одного и того же приложения с разными схемами не работает,
max aka maxладно, всем спасибо, вопрос закрыт до "лучших времен"
да. Нужно осмысленно применять хибер.
Он не охватывает все возможности СУБД.
У него другие задачи.
1. Коннект идёт к базе а не к схеме.
2. Для изоляции одного веб приложения от другого надо использовать разные базы а не схемы.
3. Схема в постгри аналог
namespace aaaa{
...
}
...
Рейтинг: 0 / 0
Hibernate не создает сиквенсы когда они существуют в другой схеме.
    #39827097
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
max aka max,
покажи метаданные для последовательностей, и как выбираешь схему в приложении. Обсуждать логи без кода пустое дело
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate не создает сиквенсы когда они существуют в другой схеме.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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