Частный синоним в генераторе MyBatis - PullRequest
0 голосов
/ 27 апреля 2020

Я генерирую объекты, используя генератор Mybatis. Мне удалось создать классы с фактическим именем таблицы в этой схеме. Но дал разрешение на выбор другой схемы в этой таблице и создал частный синоним. Я хотел бы создавать объекты, используя этот синоним.

<table tableName="PrivateSynonym" domainObjectName="PrivateSynonym"  enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true" modelType="flat">

    <property name="useActualColumnNames" value="true" />
   </table>

Я пробовал на примере выше, он не работал. Он говорит, что нет таблицы, сопоставленной с PrivateSynonym. Можно ли использовать синоним для генерации объектов? Любая помощь в этом очень ценится.

1 Ответ

0 голосов
/ 27 апреля 2020

Способность генерировать из синонимов зависит от драйвера JDB C, но я не удивлен, что он не работает. Генератор использует метод DatabaseMetaData.getColumns() для изучения таблиц, и неудивительно, что в команде большинство драйверов игнорируют синонимы.

Решением этой проблемы является генерация кода на основе таблицы, но изменение имена времени выполнения к чему-то еще. Вы можете использовать привилегированный идентификатор для генерации кода, но используйте синонимы в сгенерированном коде, чтобы пользователям не понадобился привилегированный идентификатор. Например:

<table tableName="PrivateTable" schema="PrivateSchema">
  <property name="runtimeTableName" value="PublicSynonym"/>
  <property name="runtimeSchema" value="PublicSchema"/>
</table>
...