sto usando DBUnit per un test di integrazione, e prima di eseguire il codice di prova che sto funzionando in questo errore:DBUnit PostgresqlDataTypeFactory non riconosce elenco 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.
la colonna che viene ignorato è una lista di enumerazioni. Nel set di dati è scritto così:
<?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>
mi sono guardato allo DBUnit FAQ e vide this issue, che dice che devo eseguire l'override del metodo isEnumType() per sostenere la mia enum è PostgreSQL, così ho fatto questo:
/**
* 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());
}
Ma ho ancora lo stesso errore, e non so perché. Forse non sto scavalcando bene il metodo? Forse non è nemmeno la causa del mio problema? Se hai bisogno di un altro codice basta chiedere, grazie!
Il vostro set di dati 'badges' contiene una colonna' TRACK_TYPES'? –
Puoi inviarmi il tuo codice sorgente? Proverò a scavare dentro. –
@KevinWallis Ho appena aggiornato la domanda in modo da poter vedere la riga del set di dati. Sì, contiene quella colonna, ma viene ignorata come indica l'errore. – alfizqu