【问题标题】:Performe nested select statement with Spring JDBC使用 Spring JDBC 执行嵌套选择语句
【发布时间】:2014-12-05 22:51:09
【问题描述】:

我在执行嵌套的 SELECT 语句时遇到问题。 这是我的 SQL:

SELECT count(*) FROM posts AS p WHERE p.id IN (SELECT u.postId FROM users AS u) ;

我正在使用 MySQL,当我尝试使用 MySQL Workbench 时,它正在工作 但是,当我在使用 Spring JDBC 的应用程序中尝试此操作时,它会抛出“org.springframework.jdbc.UncategorizedSQLException。”

这是我在我的应用程序中使用它的方式:

getJdbcTemplate().queryForObject(SQL, Integer.class);

我试过了:

getJdbcTemplate().query(SQL, new RowCountCallbackHandler());

两种方法都不起作用,我得到一个错误。

是否有一些配置选项或某些东西可以让我执行这样的操作 嵌套的 SELECT 语句?

编辑

错误跟踪是:

[3D000]; error code [1046]; No database selected; nested exception is java.sql.SQLException: No data
base selected
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(Abstrac
tFallbackSQLExceptionTranslator.java:84)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(Abstrac
tFallbackSQLExceptionTranslator.java:81)
        at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(Abstrac
tFallbackSQLExceptionTranslator.java:81)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:411)
        at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:466)
        at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:476)
        at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:486)
        at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:492)

【问题讨论】:

    标签: java mysql sql spring jdbc


    【解决方案1】:

    您没有正确配置数据源:

    示例:

       <bean id="dataSource" 
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
          <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
          <property name="url" value="jdbc:mysql://localhost:3306/TEST"/>
          <property name="username" value="root"/>
          <property name="password" value="password"/>
       </bean>
    

    您需要将DATABASE NAME添加到url,在本例中为TEST

    【讨论】:

    • 是的,这可以解决问题。你能解释一下这个问题吗?为什么指定 DB NAME 来修复它?
    • @MilenYanchev,除了表名,你还需要指定模式名。
    • 这正是我所做的。感谢您帮助我解决问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 2017-09-15
    • 2021-04-07
    • 1970-01-01
    相关资源
    最近更新 更多