代码之家  ›  专栏  ›  技术社区  ›  Nadav96

Hibernate访问模式中的表而不是dbo结果,并进行模式验证:缺少表

  •  0
  • Nadav96  · 技术社区  · 8 年前

    dbo公司 实例 .

    我在dbo模式中创建了一个名为 ,并在hibernate中映射:

    @Entity
    @Table(name = "A")
    public class ATable {
        private Integer id;
    
        @Id
        @Column(name = "id")
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    }
    

    alter schema example transfer dbo.A
    

    并更改了hibernate类:

    @Entity
    @Table(name = "A", schema = "example")
    public class ATable {
        private Integer id;
    
        @Id
        @Column(name = "id")
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    }
    

    但在运行它时,它抛出以下异常,并退出程序。

    INFO: HHH000262: Table not found: A
    Exception in thread "main" org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [A]
        at org.hibernate.tool.schema.internal.SchemaValidatorImpl.validateTable(SchemaValidatorImpl.java:130)
        at org.hibernate.tool.schema.internal.SchemaValidatorImpl.performValidation(SchemaValidatorImpl.java:100)
        at org.hibernate.tool.schema.internal.SchemaValidatorImpl.doValidation(SchemaValidatorImpl.java:65)
        at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:184)
        at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:65)
        at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:459)
        at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:465)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:711)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:727)
        at com.venditio.Application.main(Application.java:21)
    

    @Table(name = "example.A")
    

    但它引发了一些相同的例外:

    INFO: HHH000262: Table not found: example.A
    Sep 22, 2017 3:53:36 PM org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl processGetTableResults
    INFO: HHH000262: Table not found: example.A
    Exception in thread "main" org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [example.A]
        at org.hibernate.tool.schema.internal.SchemaValidatorImpl.validateTable(SchemaValidatorImpl.java:130)
        at org.hibernate.tool.schema.internal.SchemaValidatorImpl.performValidation(SchemaValidatorImpl.java:100)
        at org.hibernate.tool.schema.internal.SchemaValidatorImpl.doValidation(SchemaValidatorImpl.java:65)
        at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:184)
        at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:65)
        at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:459)
        at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:465)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:711)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:727)
        at com.venditio.Application.main(Application.java:21)
    

    似乎我需要以某种方式配置hibernate以支持额外的模式,但不知道如何配置。

    应用程序:

    public class Application {
        private static SessionFactory sessionFactory;
        public static void main(String[] args) {
            Configuration configuration = new Configuration().configure();
            sessionFactory = configuration.buildSessionFactory();
    
            sessionFactory.openSession().close();
        }
    }
    

    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <!--MSSQL-->
            <property name="hibernate.connection.url">jdbc:jtds:sqlserver://localhost:1433/d1</property>
            <property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
    
            <property name="hibernate.connection.username">a</property>
            <property name="hibernate.connection.password">1</property>
            <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
    
            <!--Global-->
            <property name="hibernate.connection.pool_size">10</property>
            <property name="show_sql">true</property>
            <property name="hibernate.hbm2ddl.auto">validate</property>
            <property name="hibernate.current_session_context_class">thread</property>
    
            <mapping class="com.a.A" />
        </session-factory>
    </hibernate-configuration>
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Nadav96    8 年前

    结果是,从hibernate中删除以下行。cfg。xml成功了

    <property name="hibernate.hbm2ddl.auto">validate</property>