Я пытаюсь перенести проект WaveMaker с версии 9.4 на 10.6.6 и сталкиваюсь с постоянными ошибками компиляции, связанными с несоответствием типов между Integer и BigInteger в автоматически создаваемых файлах службы Java. Ошибки возникают, в частности, при сопоставлении отношений внешних ключей между несколькими объектами базы данных.
Среда
- Исходная версия: WaveMaker 9.4
- Целевая версия: WaveMaker 10.6.6
- База данных: на основе SQL (конкретная СУБД не упоминается, но, похоже, используются целочисленные первичные ключи с автоинкрементом)
Сборка завершается неудачей из-за этих ошибок несоответствия типов в сгенерированном коде Java. Вот полный журнал ошибок:
Код: Выделить всё
1. ERROR in /default/projects/CIPA_TEMP/master/services/WavemakerDB/src/com/cipa/wavemakerdb/CommAppInfo.java (at line 1403)
this.progId = commPrograms.getProgId();
^^^^^^^^^^^^^^^^^^^^^^^^
Type mismatch: cannot convert from Integer to BigInteger
2. ERROR in /default/projects/CIPA_TEMP/master/services/WavemakerDB/src/com/cipa/wavemakerdb/CommEquInfo.java (at line 234)
this.appId = commAppInfo.getAppId();
^^^^^^^^^^^^^^^^^^^^^^
Type mismatch: cannot convert from Integer to BigInteger
3. ERROR in /default/projects/CIPA_TEMP/master/services/WavemakerDB/src/com/cipa/wavemakerdb/CommResponse.java (at line 162)
this.bldgId = commBldgInfo.getBldgId();
^^^^^^^^^^^^^^^^^^^^^^^^
Type mismatch: cannot convert from Integer to BigInteger
4. ERROR in /default/projects/CIPA_TEMP/master/services/WavemakerDB/src/com/cipa/wavemakerdb/CommResponse.java (at line 192)
this.equId = commEquInfo.getEquId();
^^^^^^^^^^^^^^^^^^^^^^
Type mismatch: cannot convert from Integer to BigInteger
5. ERROR in /default/projects/CIPA_TEMP/master/services/WavemakerDB/src/com/cipa/wavemakerdb/CommResponse.java (at line 207)
this.locId = commLocInfo.getLocId();
^^^^^^^^^^^^^^^^^^^^^^
Type mismatch: cannot convert from Integer to BigInteger
6. ERROR in /default/projects/CIPA_TEMP/master/services/WavemakerDB/src/com/cipa/wavemakerdb/Uwcomments.java (at line 129)
this.uid = users.getUid();
^^^^^^^^^^^^^^
Type mismatch: cannot convert from BigInteger to Integer
Ошибки охватывают несколько связей сущностей:
- ← CommPrograms (внешний ключ progId)
Код: Выделить всё
CommAppInfo - ← CommAppInfo (внешний ключ appId)
Код: Выделить всё
CommEquInfo - ← CommBldgInfo (внешний ключ bldgId)
Код: Выделить всё
CommResponse - ← CommEquInfo (внешний ключ equId)
Код: Выделить всё
CommResponse - ← CommLocInfo (внешний ключ locId)
Код: Выделить всё
CommResponse - ← Пользователи (внешний ключ uid)
Код: Выделить всё
Uwcomments
- Исправления кода вручную: Была предпринята попытка вручную изменить сгенерированные файлы Java, но WaveMaker отказывается компилировать, поэтому все изменения базы данных должны происходить через пользовательский интерфейс.
- Повторный импорт базы данных через пользовательский интерфейс: Предпринята попытка повторного импорта базы данных с помощью мастера импорта базы данных WaveMaker, но несоответствия типов сохраняются.
- Проверены учебные материалы по WaveMaker: Пройдены все курсы WaveMaker, чтобы обеспечить правильное использование функций управления базами данных платформы.
- Обратился в службу поддержки WaveMaker: Официальная поддержка не получила действенного решения.
- Повторный импорт версии 9.4: Перед миграцией предпринята попытка повторного импорта базы данных в версии 9.4, что привело к тем же ошибкам, что и выше.
Мы полагаем, что в какой-то момент схема базы данных была изменена за пределами пользовательского интерфейса WaveMaker (возможно, прямые изменения SQL), что привело к рассинхронизации внутреннего представления схемы WaveMaker с фактической структурой базы данных. Переход с версии 9.4 на версию 10.6.6 также мог изменить способ сопоставления WaveMaker определенных целочисленных типов SQL с типами Java, что усугубило несогласованность.
Столбцы внешних ключей имеют несогласованные сопоставления типов: в некоторых таблицах поля определены как Integer, а связанные с ними таблицы возвращают BigInteger для того же столбца с логическим идентификатором.
Вопросы
- Есть ли способ заставить WaveMaker заново генерировать все сопоставления сущностей с нуля на основе текущей схемы базы данных, а не полагаться на кэшированные метаданные из проекта 9.4?
- Как мы можем устранить несогласованность типов во взаимоотношениях внешних ключей, когда генератор кода WaveMaker создает несовпадающие типы среди связанных сущностей?
- Существует ли файл конфигурации или сопоставления, который мы можем вручную отредактировать, чтобы указать сопоставления типов Java для определенных столбцов базы данных перед генерацией кода?
- Кто-нибудь успешно перенес проект WaveMaker 9.x в 10.x с подобными конфликтами типов Integer/BigInteger? Какой подход сработал?
- Известны ли изменения в том, как WaveMaker 10.6.6 сопоставляет целочисленные типы SQL (INT, BIGINT и т. д.) с типами Java по сравнению с версией 9.4?
- Внешние ключи правильно определены в схема базы данных (проверена прямой проверкой базы данных)
- Ошибки возникают независимо от того, переносимся ли мы напрямую или повторно импортируем сначала в версию 9.4.
- Мы не можем откатить версии WaveMaker для целей тестирования.
- Проект успешно создан в WaveMaker 9.4 перед миграцией.
Подробнее здесь: https://stackoverflow.com/questions/798 ... biginteger
Мобильная версия