Używam DBUnit dla testu integracji, a przed wykonaniem kodu testu używam do tego błędu:DBUnit PostgresqlDataTypeFactory nie rozpoznaje listy enum
badges.track_types data type (2003, '_text') not recognized and will be ignored. See FAQ for more information.
org.dbunit.dataset.NoSuchColumnException: badges.TRACK_TYPES - (Non-uppercase input column: track_types) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.
kolumna, która jest ignorowana jest lista wylicza. W zbiorze jest napisane tak:
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
// More info ...
<badges name="30'000" description="30k a day" image_name="30000.png" threshold_val="30000.00000000" has_many="true" id="45" track_types="{TRACK_GENERIC}" "/>
</dataset>
spojrzałem w DBUnit FAQ i zobaczyłem this issue, który mówi, że muszę zastąpić metodę isEnumType(), aby wspierać mój enum jest PostgreSQL, więc zrobiłem to:
/**
* Override method to set custom properties/features
*/
protected void setUpDatabaseConfig(DatabaseConfig config) {
config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new PostgresqlDataTypeFactory(){
public boolean isEnumType(String sqlTypeName) {
if(sqlTypeName.equalsIgnoreCase("track_types")){
return true;
}
return false;
}
});
config.setProperty(DatabaseConfig.PROPERTY_METADATA_HANDLER, new DefaultMetadataHandler());
}
Ale nadal mam ten sam błąd i nie wiem dlaczego. Może nie przesadzam z tą metodą? Może to nie jest nawet przyczyną mojego problemu? Jeśli potrzebujesz innego kodu, po prostu zapytaj, dzięki!
Czy w zbiorze danych 'odznaki' znajduje się kolumna' TRACK_TYPES'? –
Czy możesz wysłać mi swój kod źródłowy? Spróbuję się w to zagłębić. –
@KevinWallis Właśnie zaktualizowałem pytanie, aby zobaczyć wiersz zestawu danych. Tak, zawiera tę kolumnę, ale jest ignorowana, jak stwierdza błąd. – alfizqu