我正在尝试使用注释运行 Hibernate。但是调用
buildSessionFactory()
后不会生成表。我想这是我的代码:
public class HibernateApp {
public static void main(String[] args) {
SessionFactory sessionFactory = buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
TestEntity entity = new TestEntity();
session.save(entity);
transaction.commit();
session.close();
sessionFactory.close();
}
private static SessionFactory buildSessionFactory() {
try {
AnnotationConfiguration configuration = new AnnotationConfiguration();
Properties properties = PropertiesReader.get();
configuration.setProperties(properties);
configuration.addAnnotatedClass(app.model.TestEntity.class);
configuration.buildMappings();
return configuration.buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
throw new ExceptionInInitializerError(e);
}
}
}
我的房产:
hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.ddl-auto=update
hibernate.connection.url=jdbc:oracle:thin:@10.0.0.181:1521:center
hibernate.connection.username=username
hibernate.connection.password=password
hibernate.connection.autocommit=true
编辑:
值得一提的是,我尝试使用 hibernate 构建这个项目,但不是 Spring。我猜想有这个问题,因为大多数教程都暗示将 Hibernate 与 Spring 结合使用,并且依赖项存在一些重叠。
当我使用
hibernate-core
代替 hibernate-entitymanager
依赖时,问题就解决了。然后我只使用 Configuration 而不是 AnnotationConfiguration。对于第一个依赖项,我找不到 addAnnotatedClass
方法。
然后Hibernate调用后开始创建表
SessionFactory sessionFactory = new Configuration()
.addAnnotatedClass(app.model.TestEntity.class)
.buildSessionFactory();