2017-02-24 3 views
0
<dataset> 
<user id="1" created_date='2017-01-01 00:00:00' email="" user_name="root"/> 
</dataset> 

Xml oben gibt mir einen Fehler. Das Problem ist, dass ich Wort für Benutzer reserviert habe. Wie kann ich das lösen? irgendwelche Verbindungen?org.postgresql.util.PSQLException: FEHLER: Syntaxfehler bei oder in der Nähe von "Benutzer"

aktualisiert

Ich bin mit Federverschluß, Federdaten JPA, feder Test-DBUnit, DBUnit, postgresql

+0

geben ' user' ist ein reserviertes Schlüsselwort, es muss in Anführungszeichen gesetzt werden: '" user "'. Sie werden viel weniger Probleme haben, wenn Sie einen anderen Namen finden, der kein reserviertes Schlüsselwort ist. –

+0

@a_horse_with_no_name könnten Sie bitte zeigen, wie reserviertes Wort zu zitieren ist. Ich habe versucht, aber konnte nicht <'user' id =" 1 "created_date = '2017-01-01 00:00:00' email =" "user_name =" root "/> keine dieser Arbeiten" "'' – roki

+1

In SQL Sie verwenden einfach "user". Ich weiß nicht, wie Sie das in DbUnit's XML machen würden. Aber noch einmal: Versuchen Sie einen Namen zu finden, der nicht zitiert werden muss. Sie werden sich eine Menge Ärger ersparen (DbUnits offensichtliche Unfähigkeit, mit reservierten Keywords richtig umzugehen, ist nur ein Beispiel) –

Antwort

0

Nach diesem Forum https://sourceforge.net/p/dbunit/mailman/message/20643023/ es nicht wie DBUnit scheint hat einen Weg zu „Zitat "Der Tabellenname. Aber Sie können DatabaseDataSourceConnectionFactoryBean konfigurieren, wenn Sie nicht wollen, Tabellen aus irgendeinem Grund benennen oder die Arbeit mit Legacy-Datenbank

@Configuration 
public class Custom.... { 

    @Autowired 
    private DataSource dataSource; 

    @Bean 
    public DatabaseConfigBean dbUnitDatabaseConfig() { 
     DatabaseConfigBean dbConfigBean = new DatabaseConfigBean(); 
//  dbConfigBean.setDatatypeFactory(new PostgresqlDataTypeFactory()); 
     dbConfigBean.setQualifiedTableNames(true); 
     return dbConfigBean; 
    } 

    @Bean 
    public DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection() { 
     DatabaseDataSourceConnectionFactoryBean databaseDataSourceConnectionFactoryBean = new DatabaseDataSourceConnectionFactoryBean(dataSource); 
     databaseDataSourceConnectionFactoryBean.setDatabaseConfig(dbUnitDatabaseConfig()); 
     return databaseDataSourceConnectionFactoryBean; 
    } 
} 

Nach der Einstellung treu qualifiedTableNames sollten Sie vollen Namen für ur Tabellen in xml

<public.user id="1" created_date='2017-01-01 00:00:00' email="[email protected]" password="your password" username="root"/> 
Verwandte Themen