我正在使用 Hibernate 5.6.15 和
addAnnotatedClass(Class annotatedClass)
注册实体。但是当我获得一个会话并尝试保存一个实体时,仍然没有创建表并且我得到“ORA-00942:表或视图不存在”。我设置了hibernate.ddl-auto=create
。我还尝试先打开和关闭一个会话和一个事务,但没有结果。我正在使用 Hibernate 5 来与 Java 8 兼容。
import java.util.Properties;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import ua.gov.ioc.exchange.config.HibernateConfig;
import ua.gov.ioc.exchange.obituary.model.TestEntity;
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);
}
}
}
我的实体:
import javax.persistence.*;
import org.hibernate.annotations.BatchSize;
@Entity
@Table(name = "TestEntity")
public class TestEntity {
@Id
private Long id = 1L;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
我的属性:
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-core
依赖我用了hibernate-entitymanager
哪个org.hibernate.boot
包裹StandardServiceRegistryBuilder
。在那之后,我终于得到了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() {
return new Configuration().addAnnotatedClass(app.model.TestEntity.class).buildSessionFactory();
}
}