首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleJdbcInsert -不在默认模式的表中插入数据

SimpleJdbcInsert -不在默认模式的表中插入数据
EN

Stack Overflow用户
提问于 2013-11-27 17:37:55
回答 2查看 908关注 0票数 0

我正在为使用Spring的SimpleJdbcInsert的代码而苦苦挣扎。

代码语言:javascript
复制
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上使用了这个。

EN

回答 2

Stack Overflow用户

发布于 2013-11-27 17:49:16

据我所知,每当一个数据库被分成多个模式时,你必须特别指定你所指向的模式(不管默认的模式)。我认为,这就是当你使用add .withSchemaName(MY_SCHEMA1)时它工作得很好的原因。但是,正如您已经提到的,您没有此选项,您可以在其他地方指定模式名称,例如在服务器配置文件中,即应用程序的属性文件中。

票数 0
EN

Stack Overflow用户

发布于 2013-11-27 17:59:12

在任意时间动态调用withSchemaName()和useColumns()等方法是SimpleJdbcInsert等“查询构建器”类的主要用途:为什么要将它用作常量?

如果您坚持使用最终的SimpleJdbcInsert变量,那么它可以是一个泛型变量(编写方式类似于代码示例,没有模式),然后可以在找到要使用的模式后对其调用withSchemaName(),以获得可以执行的完全指定的SimpleJdbcInsert。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20238692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档