Tôi có dự án Maven với khung công tác Hibernate và Spring. Tôi muốn Hibernate tạo bảng tự động, nhưng tất cả các bảng hiện có chỉ bị loại bỏ và các bảng được yêu cầu không được tạo. Không có ngoại lệ được ném trong phiên nhà máy khởi, nhưng khi tôi cố gắng tiết kiệm một thực thể Player
, ngoại lệ được ném:Hibernate không tạo bảng tự động
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Bảng 'billboarddb.player' không tồn tại
Nếu tôi tạo bảng theo cách thủ công và thay đổi thuộc tính hibernate.hbm2ddl.auto
thành "validate"
, thì mọi thứ hoạt động tốt. Bạn có bất kỳ ý tưởng nào, tại sao Hibernate không tạo ra các bảng? tập tin cấu hình
mùa xuân:
<context:component-scan base-package="org.meluk.billboard.business.controller" />
<tx:annotation-driven transaction-manager="txManager" />
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" >
<list>
<value>/WEB-INF/config/jdbc.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${hibernate.connection.driver_class}" />
<property name="url" value="${hibernate.connection.url}" />
<property name="username" value="${hibernate.connection.username}" />
<property name="password" value="${hibernate.connection.password}" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" >
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="/WEB-INF/hibernate.cfg.xml" />
<property name="packagesToScan" value="org.meluk.billboard.jpa" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.c3p0.min_size">${hibernate.c3p0.min_size}</prop>
<prop key="hibernate.c3p0.max_size">${hibernate.c3p0.max_size}</prop>
<prop key="hibernate.c3p0.timeout">${hibernate.c3p0.timeout}</prop>
<prop key="hibernate.c3p0.max_statements">${hibernate.c3p0.max_statements}</prop>
</props>
</property>
</bean>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
jdbc.properties file:
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://127.0.0.1:3306/BillboardDB
hibernate.connection.username=root
hibernate.connection.password=1234
hibernate.default_schema=BillboardDB
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
hibernate.hbm2ddl.auto=create
hibernate.show_sql=true
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50
Hibernate phụ thuộc:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernateVersion}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${hibernateVersion}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-tools</artifactId>
<version>${hibernateToolsVersion}</version>
</dependency>
Bản sao của http://stackoverflow.com/questions/4507142/does-hibernate-create-tables-in-the-database-automatically – JMelnik
Có chúng giống nhau, nhưng có các bảng được tạo tốt. – Balconsky
Chỉ để cung cấp cho bạn một ý tưởng. Nếu mọi thứ được cấu hình đúng Kiểm tra các thiết lập phương ngữ của bạn cho cơ sở dữ liệu của bạn –