2013-07-15 3 views
1

DBUnit을 사용하여 AS400에서 데이터를 내보내고 JUnit 테스트를 위해 HSQLDB 데이터베이스로 가져 오려고하지만 데이터 유형 정보가 내보내기/가져 오기되지 않는 것 같습니다. 모든 것이 CDATA로 수출 (따라서 수입 될 것)되는 것 같습니다. 누군가이 답변을 찾을 수있는 곳을 말해 줄 수 있습니까?DBUnit에서 데이터 형식 내보내기/가져 오기?

내가 성공적으로 구축했습니다과 예제 중 하나를 실행하여이 예를 들어, 저를 제공

public static void main(String[] args) throws Exception 
{ 
    // database connection 
    Class driverClass = Class.forName("com.ibm.as400.access.AS400JDBCDriver"); 
    Connection jdbcConnection = DriverManager.getConnection("jdbc:as400://myserver;libraries=MYLIB", "user", "password"); 
    IDatabaseConnection connection = new DatabaseConnection(jdbcConnection); 

    // partial database export 
    QueryDataSet partialDataSet = new QueryDataSet(connection); 
    partialDataSet.addTable("TABLE1"); 
    partialDataSet.addTable("TABLE2"); 
    FlatXmlDataSet.write(partialDataSet, new FileOutputStream("flatpartial_as400.xml")); 
    FlatDtdDataSet.write(connection.createDataSet(), new FileOutputStream("flatdtd_as400.dtd")); 
    XmlDataSet.write(partialDataSet, new FileOutputStream("partial_as400.xml")); 

을, 다음과 같은 출력 : 여기에

<?xml version='1.0' encoding='UTF-8'?> 
<dataset> 
    <TABLE1/> 
    <TABLE2 ADDRESS_ID="1" ADDRESS_TYPE="1" ADDRESS_DESCRIPTION="Billing Address   "/> 
    <TABLE2 ADDRESS_ID="2" ADDRESS_TYPE="2" ADDRESS_DESCRIPTION="Delivery Address   "/> 
    <TABLE2 ADDRESS_ID="3" ADDRESS_TYPE="3" ADDRESS_DESCRIPTION="Owner Address   "/> 
    <TABLE2 ADDRESS_ID="4" ADDRESS_TYPE="4" ADDRESS_DESCRIPTION="Owner Previous Address "/> 
    <TABLE2 ADDRESS_ID="5" ADDRESS_TYPE="5" ADDRESS_DESCRIPTION="Store Address   "/> 
</dataset> 

가 생성되는 DTD 조각입니다 :

<!ELEMENT TABLE2 EMPTY> 
<!ATTLIST TABLE2 
    ADDRESS_ID CDATA #REQUIRED 
    ADDRESS_TYPE CDATA #REQUIRED 
    ADDRES_DESCRIPTION CDATA #REQUIRED 
> 

첫 번째 필드는 DECIMAL (10,0)를해야하지만 CDATA입니다. 분명히 이것은 데이터 무결성 관점에서 문제가 될 것입니다. 디버거에서 형식 정보가 DBUnit 패키지에 있음을 알 수 있습니다. ADDRESS_ID 필드는 코드 안에 DECIMAL입니다. 그러나이 정보는 파일의 XML DTD에 들어 있지 않습니다. 가져올 테이블에 대한 Generete의 DTD 파일이

private static void generateDTD(String fileName,IDatabaseConnection connection, 
     String[] tablesToExport) throws IOException, DataSetException, 
     SQLException, FileNotFoundException { 
    FlatDtdDataSet.write(connection.createDataSet(tablesToExport), new FileOutputStream(fileName)); 
} 

다음 빌더에서이 설정

FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder(); 
     builder.setMetaDataSetFromDtd(new FileInputStream(schemaFile)); 

답변

2

는 어쩌면 그것은 도움이 될 것입니다 어떤 도움에 감사드립니다

... 당신은 아무것도 쓸 빌더 사용자가?

+0

어떻게 : –

관련 문제