mysql - DBUnit ignores column aliases, when creating dataset from query? -


i have 2 datasets, want compare dbunit: 1 defines xml file, other trying create using query:

dbconnection.createquerytable("my_table", "select ..."); 

select goes on couple of tables, few of them has same column names, using aliases distinguish between them. query runs fine, seems while creating dataset, dbunit ignores column aliases , uses original names instead. seen in debug log:

01.03.13 14:18:43,228 [ debug] abstractdatabaseconnection - createquerytable(resultname=my_table, sql=         select `table1`.`name`             , `table2`.`label` `table2_label`             , `table3`.`label`         `table1`             , `table2`             , `table3`         `table1`.`id` = `table2`.`table1_id`             , `table2`.`id` = `table3`.`table2_id`     ) - start 01.03.13 14:18:43,228 [ debug] databasedatasourceconnection - getconnection() - start 01.03.13 14:18:43,228 [ debug] databaseconfig$configurator - statement fetch size set 100 01.03.13 14:18:43,240 [ debug] databasedatasourceconnection - getconnection() - start 01.03.13 14:18:43,240 [ debug] databasetablemetadata - 'schemaname' resultsetmetadata empty-string , not applicable hence. not try lookup column properties via databasemetadata.getcolumns. 01.03.13 14:18:43,240 [ debug] databasetablemetadata - 'schemaname' resultsetmetadata empty-string , not applicable hence. not try lookup column properties via databasemetadata.getcolumns. 01.03.13 14:18:43,240 [ debug] databasetablemetadata - 'schemaname' resultsetmetadata empty-string , not applicable hence. not try lookup column properties via databasemetadata.getcolumns. 01.03.13 14:18:43,240 [ debug] forwardonlyresultsettable - getvalue(row=0, columnname=name) - start 01.03.13 14:18:43,240 [ debug] forwardonlyresultsettable - getvalue(row=0, columnname=label) - start 01.03.13 14:18:43,240 [ debug] forwardonlyresultsettable - getvalue(row=0, columnname=label) - start 01.03.13 14:18:43,240 [ debug] forwardonlyresultsettable - getvalue(row=1, columnname=name) - start 01.03.13 14:18:43,241 [ debug] forwardonlyresultsettable - getvalue(row=1, columnname=label) - start 01.03.13 14:18:43,241 [ debug] forwardonlyresultsettable - getvalue(row=1, columnname=label) - start 01.03.13 14:18:43,241 [ debug] forwardonlyresultsettable - getvalue(row=2, columnname=name) - start 01.03.13 14:18:43,241 [ debug] forwardonlyresultsettable - getvalue(row=2, columnname=label) - start 01.03.13 14:18:43,241 [ debug] forwardonlyresultsettable - getvalue(row=2, columnname=label) - start 

as see - getvalue(row=x) uses label name table2 , table3 columns , not table2_label , label defined in query...

how solve this? using mysql database.

this looks caused change in mysql java connector

caused databasetablemetadata calling resultsetmetadata#getcolumnname() rather #getcolumnlabel()

you don't state version of dbunit/mysql using, dbunit 2.2 & 2.4.9 affected mysql connector 5.1.26.

as workaround, mysql devs have included backward compatability option, discussed in change above.

to configure it, add property jdbc url:

jdbc:mysql://host/db_name?useoldaliasmetadatabehavior=true

as per these instructions.


Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -