Spring Test DBUnit 和表模式名称

per*_*rak 5 java dbunit spring-test-dbunit

@DatabaseSetup使用Spring Test DBUnit 的注释时是否可以设置表模式名称?目前我正在这样使用它:

@DatabaseSetup("user-data.xml")
public class UserMapperTest {
}
Run Code Online (Sandbox Code Playgroud)

user-data.xml:(我也尝试将元素名称设置为 user.system_user 但没有任何运气)

<dataset>
    <system_user
        ...
        />
</dataset>
Run Code Online (Sandbox Code Playgroud)

在这里,我使用名为 user 的模式创建表:

create table "user".system_user (...);
Run Code Online (Sandbox Code Playgroud)

这是我在运行测试时遇到的异常:

org.h2.jdbc.JdbcSQLException: Table "SYSTEM_USER" not found; SQL statement:
delete from SYSTEM_USER [42102-175]
Run Code Online (Sandbox Code Playgroud)

Pai*_*izo 1

我有类似的问题。您不能使用注释,但可以在连接字符串上指定架构。以下是我解决案例的方法:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
    <property name="url" value="jdbc:hsqldb:mem:fullywallet;MVCC=true" />
    <property name="username" value="sa" />
    <property name="password" value="" />
</bean>
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan">
        <list>
            <value>your.package.to.be.scanned</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
            <prop key="hibernate.default_schema">public</prop>
        </props>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

就我而言,我使用的是 HSQLDB,但它也适用于其他数据库