Есть проблема с отношением к двум таблицам в разных БД, как работает ActiveJDBC?

У меня есть проблема:

ТАБЛИЦА_1 -> дБ А

TABLE_2 -> дБ B

поля TABLE_1:

  • id_PK,
  • id_table
    java.lang.NoClassDefFoundError: Could not initialize class org.javalite.activejdbc.Registry
        at org.javalite.activejdbc.ModelDelegate.metaModelOf(ModelDelegate.java:279) 
    
    FK,
  • описание

поля TABLE_2:

  • id_PK
  • описание

Связь: TABLE_1 принадлежит TABLE_2 ForeignKeyName id_table

java.lang.NoClassDefFoundError: Could not initialize class org.javalite.activejdbc.Registry
    at org.javalite.activejdbc.ModelDelegate.metaModelOf(ModelDelegate.java:279) 
FK

СЛУЧАЙ 1:

  1. шаг 1: запустить приложение
  2. шаг 2: я пытаюсь найти запрос из TABLE_2, и он работает
  3. шаг 3: я пытаюсь найти запрос из TABLE_1, и он работает

СЛУЧАЙ 2:

  1. шаг 1: запустить приложение
  2. шаг 2: я пытаюсь найти запрос из TABLE_1 и выполнить исключение:

    java.lang.NullPointerException

        at org.javalite.activejdbc.Registry.processOverridesBelongsTo(Registry.java:393)
        at org.javalite.activejdbc.Registry.processOverrides(Registry.java:283)
        at org.javalite.activejdbc.Registry.init(Registry.java:138)
        ... 127 more
    

и когда установите свойства LOG об activejdbc, следуйте этому,

java.lang.NoClassDefFoundError: Could not initialize class org.javalite.activejdbc.Registry
    at org.javalite.activejdbc.ModelDelegate.metaModelOf(ModelDelegate.java:279) 
  1. шаг 3: я пытаюсь найти запрос из TABLE_2, и он работает
  2. шаг 4: я пытаюсь найти запрос из TABLE_1, и он работает

Как видно из СЛУЧАЯ 2, на шаге 2 запрос не работает, НО на шаге 4 все работает, что не так?

Спасибо тебе за все...


ОБНОВЛЕНИЕ:

Я вижу, что org.javalite.activejdbc.Registry в СЛУЧАЕ 2 неправильно настраивает отношения с TABLE_1 (table1Model) и TABLE_2 (table2Model); но, как вы можете видеть в СЛУЧАЕ 1, если я сначала вызову класс реестра db A (table1Model), а после db B (table2Model) правильно настрою отношения с двумя разными моделями.

Я настроил ApplicationFilter в моем весеннем загрузочном приложении, которое переопределяет методы init, doFilter и destroy; кто-нибудь знает, возможно ли настроить Registry.class с отношениями db A и B в методе init?


person Mattia    schedule 10.06.2020    source источник
comment
вы обращаетесь к двум разным базам данных? То есть таблицы физически расположены в разных схемах?   -  person ipolevoy    schedule 10.06.2020
comment
@ipolevoy Привет! Да есть две разные базы, A=table_1, B=table_2, значит таблицы расположены в разных схемах.   -  person Mattia    schedule 11.06.2020
comment
@ipolevoy Привет, Игорь, я ввел ОБНОВЛЕНИЕ, если это тебе поможет :)   -  person Mattia    schedule 12.06.2020


Ответы (1)


JavaLite ActiveJDBC не предназначен для управления отношениями между различными схемами. Если у вас что-то работает в этом режиме, то чисто случайно.

Для полного понимания вашего вопроса нам потребуется:

  • DDL для таблиц
  • код, который управляет вашими подключениями к базам данных
  • исходный код модели (не обязательно весь, просто чтобы увидеть имена и другие конфиги, если они есть)

Для получения информации о доступе к нескольким базам данных см.: https://javalite.io/database_connection_management#multiple-database-example

person ipolevoy    schedule 12.06.2020