H2含有液体酶

时间:2017-08-04 13:36:53

标签: java junit4 h2 liquibase dropwizard

我想使用liquibase在内存数据库的H2中创建Table并为我的测试插入一些数据:

  <changeSet id="create_jobItem" author="m">
    <createTable tableName="job_item" schemaName="service">
        <column name="id" type="int" autoIncrement="true">
            <constraints primaryKey="true" nullable="false"/>
        </column>
        <column name="language" type="varchar(255)" />
        <column name="description" type="text" />
    </createTable>
</changeSet>

<changeSet id="add_jobItem1" author="m">
    <insert tableName="JOB_ITEM" schemaName="service">
        <column name="id">99989</column>
        <column name="language">C#</column>
        <column name="description">position for C#</column>
    </insert>
</changeSet>

我尝试使用DAOTestRule从DB获取此行:

@Rule
public DAOTestRule database = DAOTestRule.newBuilder()
        .addEntityClass(JobItem.class).build();

使用以下命令运行liquibase脚本:

Connection connection = DriverManager.getConnection(url, user, password);
        database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));

new Liquibase(脚本,新的ClassLoaderResourceAccessor(),数据库)                     .update((String)null);

但是当我打电话时

final long savedId = 99989L;
    JobItem jobItem = database.inTransaction(() -> {
        return dao.getById(savedId);
    });

我有一个例外:

No entity found for query

javax.persistence.NoResultException:找不到查询的实体     在org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1461)

我认为这是因为Db的不同实例,但如何链接以及如何为所有测试仅制作一个H2实例

我的数据库属性:

 datasourceFactory:
  driverClass: org.h2.Driver
  user: sa
  password:
  url: jdbc:h2:mem:jobservice;INIT=create schema if not exists jobservice\;set schema service
  validationQuery: "/* MyService Health Check */ SELECT 1"
  logValidationErrors: true
  initialSize: 2
  minSize: 2
  maxSize: 8
  minIdleTime: 1 minute
  properties:
      hibernate.dialect: org.hibernate.dialect.H2Dialect
      hibernate.default_schema: lis
      hibernate.id.new_generator_mappings: false
      hibernate.show_sql: false

0 个答案:

没有答案