Вопрос по hibernate, java, spring – Hibernate не создает таблицы автоматически [закрыто]

12

У меня есть проект Maven с Hibernate и Spring Framework. Я хочу, чтобы Hibernate создавал таблицы автоматически, но все существующие таблицы просто удаляются, а необходимые таблицы не создаются. Никаких исключений не выдается во время инициализации фабрики сеанса, но при попытке сохранитьPlayer сущность, исключение выдается:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'billboarddb.player' doesn't exist

Если я создаю таблицы вручную и меняю свойствоhibernate.hbm2ddl.auto в"validate", то все работает нормально. У вас есть идея, почему Hibernate не создает таблицы?

Файл конфигурации Spring:

<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:

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 зависимости:

<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>
Я проверял это много раз. Balconsky
Как вы определили игру, игрок? Можете ли вы поставить фрагмент кода. Chandra
Да, они похожи, но там таблицы генерируются нормально. Balconsky
Дубликатstackoverflow.com/questions/4507142/… JMelnik
Просто чтобы дать вам идею. Если все правильно настроено Проверьте настройки диалекта для вашей базы данных Karesh A

Ваш Ответ

2   ответа
5

<prop key="hibernate.hbm2ddl.auto">create</prop>
да, картирование в порядке. Balconsky
вы выставили шоу sql как верно, верно? возьмите сценарии, поступающие в журналы, и запустите их напрямую, используя ваш клиент db. посмотрим, есть ли у него проблемы.
Я определил это: & lt; prop key = "hibernate.hbm2ddl.auto" & gt; $ {hibernate.hbm2ddl.auto} & lt; / prop & gt; & quot; Balconsky
у него выбрасывается & quot; com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException & quot; ? все ли сопоставления верны?
Я не вижу никакого sql для сброса или создания таблиц. Существует только: & INFO: Hibernate: вставить в Player (возраст, адрес электронной почты, пароль) значения (?,?,?) & Quot; Balconsky
28

alect. Теперь я использую MySQL5InnoDBDialect вместо этого.

я использовалMySQLDialect до и изменил его наMySQL5Dialect (добавлено "5"). Сделал работу тоже.

Похожие вопросы