Опитвам се да създам първоначално зареждане на приложение, което ще изпусне всички таблици в приложението, ако те съществуват и след това ги интифицират с нови данни.
Създадох Пролетен контекст, който зареждаконтекст на източника на данни - обаче аз не знам как да замествам инициализацията на източника на данни, така че поведението да може да бъде персонализирано в зависимост от това как се зарежда източникът на данни. Така че .. използване на хибернация като ми JPA изпълнение ..
Ако източникът на данни е зареден от приложението - тогава бих искал схемите да се актуализират:
<persistence-unit name="myDB" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
Ако източникът на данни е зареден от bootstrap - тогава трябва да претоварвам това поведение по някакъв начин, така че базата данни винаги да се създава от нулата, преди да бъдат заредени нови данни:
<persistence-unit name="myDB" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.hbm2ddl.auto" value="create"/>
</properties>
</persistence-unit>
Подходът, който вземах, не работи както азще зареди източника на данни с помощта на настройката "update" и след това ще премахне таблиците, ако те съществуват, преди да се опитат да заредят нови данни. Въпреки това - таблиците вече не съществуват за писане на данни!
Благодаря предварително
Simon
Отговори:
0 за отговор № 1Можете да прехвърлите свойствата на JPA от конфигурацията на Spring вместо на persistance.xml
и използвайте контейнер, който може да бъде конфигуриран от PlaceholderConfigurer (вероятно system-properties = "OVERRIDE") или пролетни профили (от 3.1) или като използвате Maven филтриране:
<util:map id="jpaPropertyMap" key-type="java.lang.String" value-type="java.lang.Object">
<entry key="hibernate.hbm2ddl.auto" value="${database.ddl.mode}" />
</util:map>
<bean id="managementEntityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource"
p:jpaPropertyMap-ref="jpaPropertyMap" />