Hibernate Spring与JPA的集成

Hibernate Spring与JPA的集成,hibernate,spring-data-jpa,h2,Hibernate,Spring Data Jpa,H2,我想请您指出我在以下设置中的错误 我将JPA用于Spring,更具体地说是Hibernate。 我想在JPA中使用H2内存数据库 我的Spring配置如下: @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { LocalContainerEntityManagerFactoryBean emf = new LocalContainerEn

我想请您指出我在以下设置中的错误

我将JPA用于Spring,更具体地说是Hibernate。 我想在JPA中使用H2内存数据库

我的Spring配置如下:

 @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean emf
                = new LocalContainerEntityManagerFactoryBean();
        emf.setDataSource(getDataSource());
        emf.setPackagesToScan(new String[] { "com.some.package" });

    JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    emf.setJpaVendorAdapter(vendorAdapter);
    emf.setJpaProperties(additionalProperties());

    return emf;
}

@Bean
public DataSource getDataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("org.h2.Driver");
    dataSource.setUrl("jdbc:h2:mem:H2DatabaseTest");
    dataSource.setUsername( "user" );
    dataSource.setPassword( "user" );
    return dataSource;
}

Properties additionalProperties() {
    Properties properties = new Properties();
    properties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
    properties.setProperty("hibernate.hbm2ddl.import_files", "/init-db-test.sql");
    properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
    properties.setProperty("hibernate.id.new_generator_mappings", "true");
    properties.setProperty("hibernate.show_sql", "true");
    properties.setProperty("hibernate.format_sql", "true");

    return properties;
}
```

我的问题是,带有Entity类的a表是由Hibernate创建的,但当我想查询它时,它会说未找到
表“MYENTITYCLASS”

create table MYENTITYCLASS(
       id bigint not null,
        applicationId varchar(255),
        name varchar(255),
        status varchar(255),
        timeOfRecord bigint,
        primary key (id)
    )
因此,我用
@Table(name=“MYENTITYCLASS”)
注释了实体类,现在使用表名的大写版本。但这并没有解决问题


解决办法是什么?有两个数据库实例吗?

实际上,每个连接都有不同的数据库实例

在数据源对象的url设置中使用
jdbc:h2:mem:H2DatabaseTest:DB\u CLOSE\u DELAY=-1

这意味着连接在使用后不会关闭,但会保持打开状态,以便再次使用。因此,也可以访问创建的数据库表。

解决了此数据库表的可能重复: