【问题标题】:Hibernate does not create table?Hibernate不创建表?
【发布时间】:2016-06-30 11:59:03
【问题描述】:

我正在开发一个基于 spring + hibernate 的项目。其实给了我一个Simple Spring Web Maven结构的项目(Spring Tool Suit as IDE)。

我已经成功地将项目导入到我的 STS IDE 中,并且还更改了一些休眠配置属性,以便应用程序能够与我的本地 PostGreSQL 服务器通信。

我所做的更改如下:

jdbc.driverClassName=org.postgresql.Driver
jdbc.dialect=org.hibernate.dialect.PostgreSQLDialect
jdbc.databaseurl=jdbc:postgresql://localhost:5432/schema
jdbc.username=username
jdbc.password=password

hibernate.hbm2ddl.auto 属性已设置为更新,所以我没有更改它。

然后,我只需将我的项目部署到 Pivotal 服务器并执行休眠并在我的数据库 schema 中创建大约 36 个表。看起来不错!

我的问题:在我的 hibernate.cfg.XML 文件中,总共映射了 100 个 Java 模型类,它们也有 @Entity 注释。那么,为什么 hibernate 没有创建所有剩余的表?

由于某种原因,我无法在此处发布任何模型类的代码,我已经对该问题进行了很多搜索并应用了许多不同的解决方案,但都没有奏效。 有人可以告诉我,hibernate 会出现这种反应的原因是什么?

我的模型类之一不是在我的数据库中创建的。

@Entity
@Table(name = "fare_master")
public class FareMaster {
@Id
@Column(name = "fare_id")
@GeneratedValue
private int fareId;

@Column(name = "base_fare_amount")
private double baseFareAmount;

public int getFareId() {
    return fareId;
}

public void setFareId(int fareId) {
    this.fareId = fareId;
}

public double getBaseFareAmount() {
    return baseFareAmount;
}

public void setBaseFareAmount(double baseFareAmount) {
    this.baseFareAmount = baseFareAmount;
}

}

类的映射如下

<mapping class="com.mypackage.model.FareMaster" />

【问题讨论】:

    标签: spring hibernate maven


    【解决方案1】:

    如果您想创建表,请将 hibernate.hbm2ddl.auto 属性更改为 create-drop,将其设置为 update 将只允许您更新数据库中的现有表.

    并检查您的日志文件以捕获错误。

    【讨论】:

    • 我已经尝试过 create-drop,create 但它不起作用,我的数据库中仍然有相同数量的表
    • 我使用了 create-drop,因此在部署应用程序时会自动删除我的表。
    • 它不会创建你所有的表?
    • 不,它没有。可能是什么原因?
    • 你应该检查你的映射中是否没有遗漏一些东西。或者是否有一个下拉列表你应该显示以查看其他表格:p ..
    【解决方案2】:

    经过很长时间的努力,我得出一个结论,对于这个问题或类似类型的其他问题,我们应该始终遵循基本规则

    1.) 首先,请确定您的问题意味着导致此类错误的确切问题。

    2.) 要找出确切的问题,请在您的应用程序中使用 Logger,您肯定会节省大量时间。

    在我的情况下,这是因为我已将我的数据库从 MySql 切换到 PostGreSql 以及 columnDefinition 中的一些语法( @Column Annotation)与我的新数据库不兼容。当我再次使用 MySql 时,一切正常。

    【讨论】:

      【解决方案3】:

      如果你的项目下有 schema.sql 文件,hibernate 不会创建表。

      请删除并重试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-09
        • 2017-10-24
        • 2017-04-23
        • 2017-11-15
        • 1970-01-01
        • 2019-03-25
        • 1970-01-01
        • 2016-10-29
        相关资源
        最近更新 更多