有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

MyBatis生成器中的java私有同义词

我正在使用Mybatis生成器生成对象。我能够用该模式中的实际表名生成类。但对该表上的不同模式授予了select权限,并创建了一个私有同义词。我想用这个同义词生成对象

<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) 个答案

  1. # 1 楼答案

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

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

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