【问题标题】:Hibernate DDL database generation stopped when I use Maven当我使用 Maven 时,休眠 DDL 数据库生成停止
【发布时间】:2012-07-02 20:46:05
【问题描述】:

以前,我的 Java web 项目使用 Eclipse 的普通结构,并且在容器(以防万一,Tomcat)启动时,Hibernate 正确生成了方案。

现在我正在使用 Maven 基础架构。我已经重新定位了所需的文件并配置得很好(我认为,因为一切正常:Spring 正在启动,Hibernate 正在连接数据库 - 当它之前创建并且有一些数据要获取时)。我已经测试了所有 CRUD 操作并且它正在工作。 问题是 Hibernate 拒绝像在 Eclipse 普通基础架构上那样生成方案 (DDL)。

附加信息:

  • 我的 persistence.xml 几乎是空的(一如既往),因为 Spring applicationContext.xml 正在启动它。我没有更改文件,它和以前一样继续。

    <!-- Location: src/main/resources/META-INF/persistence.xml -->
    <persistence>
        <persistence-unit name="jpa-persistence-unit" transaction-type="RESOURCE_LOCAL"/>
    </persistence>
    
  • 部分 Spring 配置放在这里(applicationContext.xml):

    <!-- Location: src/main/webapp/WEB-INF/applicationContext.xml -->
    <!-- ... -->
    <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="database" value="[DATABASE-NAME]" />
        <property name="showSql" value="true" />
        <property name="generateDdl" value="true" /> <!-- THIS CONFIGURATION WORKED PREVIOUSLY, NOW WITH MAVEN, IT'S IGNORED -->
        <property name="databasePlatform" value="[DIALECT]" />
    </bean>
    <!-- ... -->
    
  • 我没有使用任何 Maven Hibernate 插件,因为我只想要之前发生的默认行为。

  • Maven 是否使这个“generateDdl”属性无效!?为什么!?我应该怎么办!?我找不到任何解决方案。

【问题讨论】:

  • 你能发布你的 entityManagerFactory bean 定义吗?你有这个额外的属性:create
  • 正如我所说的 Shawn Sherwood,这些东西以前有效。由于某种“神奇”的原因,它现在不起作用(在 Maven 之后)。

标签: spring hibernate maven ddl


【解决方案1】:

我找到了解决办法。

Maven 对此有任何错误。

Hibernate 无法创建我的数据库,因为“方言”错误。

我记得我将方言从 MySQL 更改为 MySQL-InnoDB。 Hibernate 记录了这个问题,但我看不到它,因为没有明确导入 slf4j-simple 依赖项。

感谢您抽出宝贵时间,肖恩。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-23
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多