2017-07-08 65 views
1

我excuting liquibase chnageset当春天应用程序启动在liquibase变更集中可以传递表名作为参数吗?

<changeSet author="kbatra" id="1.2"> 
     <createTable schemaName="public" tableName="table_a"> 
      <column name="id" autoIncrement="true" type="BIGINT"> 
       <constraints primaryKey="true" /> 
      </column> 
      <column name="first_name" type="varchar(255)" /> 
      <column name="last_name" type="varchar(255)" /> 
      <column name="username" type="varchar(255)"> 
       <constraints unique="true" /> 
      </column> 
      <column name="password" type="varchar(1000)" /> 
      <column name="email" type="varchar(255)" /> 
     </createTable> 
    </changeSet> 

现在我想的是,我想执行相同的变更,但与 不同的表名是可以通过表名liquibase作为通过春天的论据?有没有其他的 这个相同的场景?

我春天Hibernate应用程序的一个模块,其中i 要产生相同的SQL架构结构,但在运行时按用户要求不同的表 名称上工作,如果这是不可能的 通过liquibase那我该怎么这个场景是否可以让任何人 请帮我设计这个模块的架构?

回答

1

您需要在变更集中使用可替换参数,然后在部署变更集时设置这些参数。您的变更可能是这样的:

<changeSet author="kbatra" id="1.2"> 
     <createTable schemaName="public" tableName="${USER_TABLE_NAME}"> 
      <column name="id" autoIncrement="true" type="BIGINT"> 
       <constraints primaryKey="true" /> 
      </column> 
      <column name="first_name" type="varchar(255)" /> 
      <column name="last_name" type="varchar(255)" /> 
      <column name="username" type="varchar(255)"> 
       <constraints unique="true" /> 
      </column> 
      <column name="password" type="varchar(1000)" /> 
      <column name="email" type="varchar(255)" /> 
     </createTable> 
    </changeSet> 

然后你就需要在运行liquibase update命令,当你的应用程序启动时,其运行设置的USER_TABLE_NAME值。

+0

感谢您的回复 –

相关问题