我正在开发基于spring + hibernate的项目。实际上,一个项目是通过 Simple Spring Web Maven 结构(Spring Tool Suit as IDE)给我的。
我已成功将项目导入我的STS IDE,并且还更改了一些hibernate配置属性,以便应用程序能够与我的本地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 服务器并执行hibernate并在我的数据库架构中创建大约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" />
答案 0 :(得分:2)
如果要创建表,将 hibernate.hbm2ddl.auto 属性更改为 create-drop ,将其设置为更新只会允许您更新数据库中的现有表
并检查您的日志文件以捕获错误。
答案 1 :(得分:0)
经过很长一段时间的努力,我得出结论,对于这个问题或类似的其他问题,我们应该始终遵循基本规则
1。)首先,确保您的问题意味着导致此类错误的确切问题。
2。)要找出确切的问题,请在您的应用程序中使用 Logger ,这样一定会节省大量时间。
在我的情况下,这是因为我已将我的数据库从 MySql 切换到 PostGreSql 以及 columnDefinition 中的一些语法(一个参数在@Column Annotation)与我的新数据库不兼容。正如我再次使用 MySql 一切正常。
答案 2 :(得分:0)
如果你的项目下有 schema.sql 文件,hibernate 不会创建表。
请将其删除并重试。