2017-07-08 48 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

感謝您的回覆 –

相關問題