나는 프로젝트를 빌드 받는다는 사용하고 SQL 쿼리에 allias를 사용하는 경우에 ResultSetMetaData에서 열을 발견하고 오류 메시지가 없어 수 : 나는 DbUnit을에 다이빙을 시도HSQLDB &하고 DBUnit는
o.d.database.DatabaseTableMetaData - Cannot find column from ResultSetMetaData
info via DatabaseMetaData. Returning null.
java.lang.IllegalStateException: Did not find column 'T2_PRF_VALUE' for
<schema.table> 'PUBLIC.CDD_PRF_TABLE4' in catalog 'PUBLIC' because names do
not exactly match
와 HSQLDB 드라이버 이 경고를 넘어서는 어떠한 방법도 찾지 못했습니다.
내 설정입니다 (사용 받는다는) :
의 pom.xml
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.3.3</version>
<scope>test</scope>
</dependency>
hsqldb.script
SET SCHEMA PUBLIC
ALTER USER SA SET INITIAL SCHEMA PUBLIC
ALTER USER SA SET LOCAL TRUE
GRANT DBA TO SA
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE MEMORY TABLE PUBLIC.CDD_APP_TABLE1 (id INTEGER, value VARCHAR(20));
CREATE MEMORY TABLE PUBLIC.CDD_APP_TABLE2 (id INTEGER, value VARCHAR(20));
CREATE MEMORY TABLE PUBLIC.CDD_APP_TABLE3 (id INTEGER, value TIMESTAMP);
CREATE MEMORY TABLE PUBLIC.CDD_APP_TABLE4 (id INTEGER, value TIMESTAMP);
CREATE MEMORY TABLE PUBLIC.CDD_PRF_TABLE1 (id INTEGER, value VARCHAR(20));
CREATE MEMORY TABLE PUBLIC.CDD_PRF_TABLE2 (id INTEGER, value VARCHAR(20));
CREATE MEMORY TABLE PUBLIC.CDD_PRF_TABLE3 (id INTEGER, value TIMESTAMP);
CREATE MEMORY TABLE PUBLIC.CDD_PRF_TABLE4 (id INTEGER, value TIMESTAMP);
이 경고를 해결하는 방법을 아는 사람을위한 6,query.sql
SELECT T1.VALUE as T1_PRF_VALUE,
T2.VALUE as T2_PRF_VALUE
FROM CDD_PRF_TABLE3 AS T1 inner join CDD_PRF_TABLE4 AS T2
ON T1.ID= T2.ID
Main.java
final public static String URL = "jdbc:hsqldb:res:hsqldb/hsqldb";
final public static String DRIVER = "org.hsqldb.jdbcDriver";
final public static String USERNAME = "sa";
final public static String PASSWORD = "";
final public static String SCHEMA_NAME = "PUBLIC";
public static JdbcDatabaseTester createHsqldbConnection() throws ClassNotFoundException {
return new JdbcDatabaseTester(DRIVER, URL, USERNAME, PASSWORD, SCHEMA_NAME);
}
감사합니다. 은 BTW 나는이 문제에 대한 많은 질문을보고했지만
이미있는 질문에 대한 링크를 추가 고려, 그것은 다른 사람들이 당신을 도울 수 있습니다. –
dbuit는 열 레이블을 읽은 다음이 임시 레이블을 사용하여 데이터베이스 메타 데이터의 실제 열 이름에 액세스하려고 시도합니다. – fredt
네 말이 맞다! 그는 열 레이블 대신 열 이름을 사용하고 있습니다. 이 버그에 대한 해결 방법을 찾지 못했습니다. –