java - Hibernate 不创建表
问题描述
我正在使用 Hibernate 和 PostgresSQL,并试图通过 .xml 创建一个表但没有成功。
启动 Main.class 时没有看到错误。也许我应该使用另一个版本的 Hibernate?
我正在使用 Gradle 并添加了最新版本的 hibernate-core、hibernate-entitymanager 和 hibernate-validator 的依赖项。
我一直在看2016年发布的视频:可能有问题。
休眠配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.PostgreSQL9Dialect</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="connection.url">jdbc:postgresql://localhost:5432/postgres</property>
<property name="connection.username">pavel</property>
<property name="connection.password">31228900</property>
<property name="connection.pool_size">10</property>
<property name="hbm2ddl.auto">create</property>
<mapping resource="planetofUsers.cfg.xml"/>
</session-factory>
</hibernate-configuration>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="hibernateLesson.Planet" table="planet">
<id name="id" >
<generator class="native" />
</id>
<property name="age" column="age" type="int" />
<property name="firstName" column="first_name" type="string" />
<property name="lastName" column="last_name" type="string" />
</class>
</hibernate-mapping>
Java 类:
import lombok.Data;
import lombok.experimental.FieldDefaults;
import static lombok.AccessLevel.PRIVATE;
@Data
@FieldDefaults(level = PRIVATE)
public class Planet {
long id;
int age;
String firstName;
String
import lombok.experimental.FieldDefaults;
import org.hibernate.SessionFactory;
import static lombok.AccessLevel.PRIVATE;
public class Main {
public static void main(String[] args) {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
}
}
package hibernateLesson;
import lombok.experimental.FieldDefaults;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import static lombok.AccessLevel.PRIVATE;
@FieldDefaults(level = PRIVATE)
public class HibernateUtil {
static SessionFactory sessionFactory = null;
static {
Configuration cfg = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties());
sessionFactory = cfg.buildSessionFactory(builder.build());
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
解决方案
使用以下设置:
hibernate.hbm2ddl.auto = create
推荐阅读
- database-migration - 如何有条件地运行 Knex 迁移
- laravel - 无法在 laravel 7.5.2 上安装 vue ui
- javascript - ReactJS:当其中的文本为某个值时如何使按钮背景颜色发生变化
- inno-setup - 如何在 Inno Setup 中更改窗口标题中的名称?
- python - 如何使用 python 子进程模块执行多个 shell 命令?
- javascript - jQuery如何实现CRUD操作?
- javascript - 如何理解以下代码中的解构语法
- java - 从数组返回流作为 int[] 而不是 Integer[]
- node.js - 可以更新 emacs rgrep 命令以在整个 nodejs 项目中排除“node_modules”吗?
- python - colab如何释放内存?