0

我正在使用 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 映射的表。是否可以使用同义词来生成对象?非常感谢您对此的任何帮助。

4

1 回答 1

0

从同义词生成的能力取决于 JDBC 驱动程序,但我并不惊讶它不起作用。生成器使用该DatabaseMetaData.getColumns()方法来了解表,并且大多数驱动程序在命令中忽略同义词也就不足为奇了。

该问题的解决方案是基于表生成代码,但将运行时名称更改为其他名称。您可以使用特权 ID 来生成代码,但在生成的代码中使用同义词,这样用户就不需要特权 ID。例如:

<table tableName="PrivateTable" schema="PrivateSchema">
  <property name="runtimeTableName" value="PublicSynonym"/>
  <property name="runtimeSchema" value="PublicSchema"/>
</table>
于 2020-04-27T13:19:04.403 回答