Java 使用MySQL的SimpleJdbcInsert
这是我写的相关代码:Java 使用MySQL的SimpleJdbcInsert,java,mysql,spring,spring-jdbc,Java,Mysql,Spring,Spring Jdbc,这是我写的相关代码: new SimpleJdbcInsert(dataSource) .withSchemaName("test") .withTableName("tableName") .usingGeneratedKeyColumns("idColumn"); 当我调用executeAndReturnKey(参数)时,我在控制台上读到: 警告 [org.springframework.jdbc.core.metadata.TableMetaDataProvide
new SimpleJdbcInsert(dataSource)
.withSchemaName("test")
.withTableName("tableName")
.usingGeneratedKeyColumns("idColumn");
当我调用executeAndReturnKey(参数)
时,我在控制台上读到:
警告
[org.springframework.jdbc.core.metadata.TableMetaDataProvider:locateTableAndProcessMetaData:336]
(main:)找不到“tableName”-列的表元数据
必须提供姓名
为什么会发生这种情况?我知道我可以手动指定列名,但我相信这不是使用JdbcSimpleInsert的目的
- MySQL版本是5.5.9
- MySQL连接器/J 5.1.23
- 春季3.2.1
java.sql.SQLException:给定语句的参数元数据不可用
所以我用石头杀死了鸟儿:)
因此,只需将
generateSimpleParameterMetadata=true
添加到JDBC连接URL,一切都将按预期工作。我得到了一个相同的错误,原因不同。在我的JDBC连接字符串中,我列出了模式。因此,将放置在chemaname
子句中会导致此错误。当我删除它时,插入成功。您是否有一个名为tableName的表,其中包含列,并且您可以从sql中读/写它?当然,事实上,如果我使用columns()手动指定要写入的列,查询将正确生成,并且可以工作。