我正在使用 Mybatis 生成器生成对象。我能够在该模式中生成具有实际表名的类。但授予该表上不同模式的选择权限并创建了一个私有(private)同义词。我想使用该同义词生成对象。
<table tableName="PrivateSynonym" domainObjectName="PrivateSynonym" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true" modelType="flat">
<property name="useActualColumnNames" value="true" />
</table>
我尝试了上面的例子,但没有成功。它说没有与 PrivateSynonym 映射的表。是否可以使用同义词来生成对象?非常感谢对此的任何帮助。
最佳答案
从同义词生成的能力取决于 JDBC 驱动程序,但它不起作用我并不感到惊讶。生成器使用 DatabaseMetaData.getColumns()
方法来了解表,因此大多数驱动程序在命令中忽略同义词也就不足为奇了。
该问题的解决方案是基于表生成代码,但将运行时名称更改为其他名称。您可以使用特权 ID 来生成代码,但在生成的代码中使用同义词,这样用户就不需要特权 ID。例如:
<table tableName="PrivateTable" schema="PrivateSchema">
<property name="runtimeTableName" value="PublicSynonym"/>
<property name="runtimeSchema" value="PublicSchema"/>
</table>
关于java - MyBatis 生成器中的私有(private)同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61451247/