HibernateJpaVendorAdapter ist generateDdl nicht ändern von Tabellen
Ich entwickle eine website mit Spring+JPA+Hibernate. In der Persistenz-Konfiguration (JPA+Hibernate) ich werde die HibernateJpaVendorAdapter ist generateDdl-Attribut auf true und in der Tat neue Entitäten korrekt erstellen die neue Tabelle in der DB.
Sobald die Tabelle erstellt wurde, obwohl, wenn ich, fügen Sie ein Attribut der Entität, erwarte ich, dass die HibernateJpaVendorAdapter zu ändern, die Tabelle und fügen Sie die Spalte als gut. Dies ist nicht passiert und es ist seltsam, weil in der Java-AbstractJpaVendorAdapter ist setGenerateDdl Methode Dokumentation es gibt: "Legen Sie fest, ob beim generieren der DDL-nach der EntityManagerFactory initialisiert wurde, erstellen/Aktualisierung alle relevanten Tabellen."
JPA+Hibernate-Konfiguration:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${db.driverClassName}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
<bean id="jpaAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="showSql" value="${db.showSql}" />
<property name="generateDdl" value="${db.generateDdl}" />
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaVendorAdapter" ref="jpaAdapter" />
<property name="jpaProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<property name="dataSource" ref="dataSource" />
</bean>
persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="m8tsPU" />
</persistence>
Mache ich etwas falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erhalten Sie eine präzise Kontrolle über die DDL-Generierung durch setzen eines entsprechenden Hibernate-spezifische Eigenschaft direkt:
Alternativ können Sie
create-drop
stattupdate
, daupdate
kann Probleme verursachen, in einigen Fällen. Beachten Sie jedoch, dass die automatische DDL-update ist nicht vorgesehen für die Verwendung in der Produktion.Alternativ können Sie drücken auch die gleichen Eigenschaften mit
jpaPropertyMap
:Vielleicht zu spät, aber ich hatte heute das gleiche problem, wenn ich schriftlich einige tests für eine bestehende app.
Tritt das problem nicht nur, wenn Sie
generateDdl
Eigentum, sondern auchHSQL
verwendet wird.Es zu lösen ich habe die Datenbank von
HSQL
zuH2
und die Datenquelle, ausorg.springframework.jdbc.datasource.DriverManagerDataSource
zuorg.apache.commons.dbcp.BasicDataSource
.Den spring-context.xml sieht aus wie:
Den persistence.xml sieht aus wie:
Ich hoffe, es hilft.