那么Hibernate生成表格?

时间:2012-03-09 13:42:49

标签: hibernate java-ee entitymanager

我看一下spring-data-jpa(实际上是我第一次使用entityManager) 我没有看到任何错误,但是entityManager似乎没有为实体类Account生成一个表。这是我在maven main / resources / META-INF文件夹中的应用程序上下文(project-model-config.xml)

 <bean id="propertyConfigurer"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:mysql.hibernate.properties</value>
            <value>classpath:mysql.jdbc.properties</value>
            <!--<value>classpath:liquibase.properties</value>-->
        </list>
    </property>
</bean>


<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

<bean id="transactionManger" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <!--<property name="generateDdl" value="true" />-->
        </bean>
    </property>
    <property name="packagesToScan" value="com.bla.bla.model.domain"/>
    <property name="persistenceUnitName" value="default"/>
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
            <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
        </props>
    </property>
</bean>


<jpa:repositories base-package="com.bla.bla.model.dao"/>

persistence.xml(main / resources / META-INF中project-model-config.xml的兄弟)也看起来像这样

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
 <persistence-unit name="default" transaction-type="RESOURCE_LOCAL" />
</persistence>

属性mysql.hibernate.properties/ mysql.jdbc.properties

hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql=false
hibernate.format_sql=false
hibernate.hbm2ddl.auto=create

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.password=mypass
jdbc.url=jdbc:mysql://localhost:3306/projectjava

包com.bla.bla.model.domain包含实体帐户

   import java.io.Serializable;
   import java.util.Date;
   import javax.persistence.Basic;
   import javax.persistence.Column;
   import javax.persistence.Entity;
   import javax.persistence.Id;
   import javax.persistence.Table;


@Entity
@Table(name = "account")
public class Account implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "account_id")
    private Long ID;
    @Basic(optional = false)
    @Column(name = "name")
}
成功构建(maven)后,没有生成表格。我甚至使用简单的断言添加了一个测试。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:META-INF/project-model-config.xml"})
public class AccountDAOTest {

 @Test
 public void testSetup(){
    Assert.assertTrue(true);
 }
}

所以我对如何获得生成的实体感到困惑,我无法理解为什么它不能生成。 任何人都可以在这看到问题吗?

1 个答案:

答案 0 :(得分:0)

Hibernate在实体映射加载时生成表。这意味着你应该生成表格。

这看起来像春天的一个问题jpaVendorAdapter告诉他们JIRA。 还有一个问题here

现在,我不确定您是否需要在应用程序上下文中使用jpaVendorAdapter。我没有使用它,也没有在Spring API docs上找到它。它不是强制性的,请将其初始化为默认的value

删除该映射并尝试执行代码。