如何只使用Hibernate注册实体和生成表? (使用注释,而不是 XML)

问题描述 投票:0回答:1

我正在使用 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
java sql hibernate orm
1个回答
0
投票
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();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.