[英]Java and HSQLDB, how to add column automatically after update
我在使用HSQLDB數據庫的Java Spring中有一個應用程序。
為了進行演變,我必須在現有表中添加一列。 因此,我已經完成了必須做的事情(將實體類中的屬性與信息一起添加),但是當我在tomcat中部署新應用程序時,數據庫未更新,因此無法啟動我的應用程序。
是否可以自動添加列?
這是applicationContext.xml中數據庫的配置:
<bean id="myEmf"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSourceDb" />
<property name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="true" />
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
謝謝您的幫助。
非常感謝您的幫助。 這是我使用flyway更新數據庫結構所做的所有操作。 有一天,它可能會對某人有所幫助。
將Flyway依賴項添加到我的pom.xml中: http : //flywaydb.org/documentation/api/
<dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>3.2.1</version> </dependency>
將Flyway配置添加到我的應用程序上下文中:
<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate"> <property name="baselineOnMigrate" value="true" /> <property name="dataSource" ref="dataSourceDb"/> </bean> <bean id="persistenceUnitManager" depends-on="flyway" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager"> <property name="defaultDataSource" ref="dataSourceDb" /> </bean>
我添加了屬性baselineOnMigrate,因為發生了錯誤,並且錯誤消息指出將此屬性設置為true將解決此問題。
在文件夾src / main / resources / db / migration下創建一個名為V2__add_datatype_column.sql的腳本
ALTER TABLE PUBLICATION ADD COLUMN datatype varchar(6);
構建,它可以工作。
非常感謝Retroq,Rich和Michael Pralow的回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.