我正在为使用Spring的SimpleJdbcInsert的代码而苦苦挣扎。
SimpleJdbcInsert jdbcInsert = (new SimpleJdbcInsert(transactionManager.getDataSource())
.withTableName(MY_TABLE).usingGeneratedKeyColumns("my_table_id")).usingColumns(MY_COLUMNS);当我在一个默认模式为"PUBLIC“的连接上使用它时,这种方法工作得很好,因为我没有设置任何模式。但是,当我添加一些模式,然后将MY_SCHEMA1设置为连接的默认模式时,这将不再起作用。它根本找不到表MY_TABLE。
如果我将.withSchemaName(MY_SCHEMA1)添加到SimpleJdbcInsert,它就会开始工作。然而,我没有这样的选择。
请帮帮忙。
注意:我在H2和DB2上使用了这个。
发布于 2013-11-27 17:49:16
据我所知,每当一个数据库被分成多个模式时,你必须特别指定你所指向的模式(不管默认的模式)。我认为,这就是当你使用add .withSchemaName(MY_SCHEMA1)时它工作得很好的原因。但是,正如您已经提到的,您没有此选项,您可以在其他地方指定模式名称,例如在服务器配置文件中,即应用程序的属性文件中。
发布于 2013-11-27 17:59:12
在任意时间动态调用withSchemaName()和useColumns()等方法是SimpleJdbcInsert等“查询构建器”类的主要用途:为什么要将它用作常量?
如果您坚持使用最终的SimpleJdbcInsert变量,那么它可以是一个泛型变量(编写方式类似于代码示例,没有模式),然后可以在找到要使用的模式后对其调用withSchemaName(),以获得可以执行的完全指定的SimpleJdbcInsert。
https://stackoverflow.com/questions/20238692
复制相似问题