データとテーブルを XML ファイルからメモリ内データベースにインポートしようとしています。この XML ファイルは、DBUnit を使用して自動的に作成します。私がマッピングしている 2 つのクラスを次に示します。
@Entity(name="Workbook")
public class WorkbookMapping implements Serializable {
@Id
@GeneratedValue
private int id;
@OneToMany(cascade = CascadeType.ALL )
List<SpreadSheetMapping> list = new ArrayList<SpreadSheetMapping>();
public WorkbookMapping() {
}
public WorkbookMapping(Workbook workbook) {
for (int i = 0; i < workbook.getSpreadsheetCount(); i++) {
list.add(new SpreadSheetMapping(workbook.getSpreadsheet(i)));
}
}
}
スプレッドシート マッピング:
@Entity(name="Spreadsheet")
public class SpreadSheetMapping implements Serializable {
@Id
@GeneratedValue
private long id;
@OneToMany(cascade = CascadeType.ALL)
List<CellMapping> list;
public SpreadSheetMapping() {
}
public SpreadSheetMapping(Spreadsheet sp) {
list = new ArrayList<CellMapping>();
for (int r = 0; r < sp.getRowCount(); r++) {
for (int i = 0; i < sp.getColumnCount(); i++) {
list.add(new CellMapping(sp.getCell(i, r)));
}
}
}
}
ここに私の hibernate.cfg.xml があります:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<property name="hibernate.cache.use_query_cache">false</property>
<property name="hibernate.cache.use_second_level_cache">false</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="connection.url">jdbc:hsqldb:mem:DBMemoria</property>
<property name="connection.username"/>
<property name="connection.password"/>
<property name="connection.pool_size">1</property>
<mapping class="csheets.io.WorkbookMapping"/>
<mapping class="csheets.io.SpreadSheetMapping"/>
<mapping class="csheets.io.CellMapping"/>
</session-factory>
</hibernate-configuration>
これは、すべてのデータをデータベースにインポートするために使用しているコードです。
Connection jdbcConnection;
jdbcConnection = DriverManager.getConnection("jdbc:hsqldb:mem:DBMemoria", "", "");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
IDataSet dataSet = new XmlDataSet(stream);
DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);
そして、私はこのエラーが発生しています:
org.dbunit.dataset.NoSuchTableException: WORKBOOK_SPREADSHEET
at org.dbunit.database.DatabaseDataSet.getTableMetaData(DatabaseDataSet.java:288)
at org.dbunit.operation.DeleteAllOperation.execute(DeleteAllOperation.java:109)
何か助けはありますか?