Spring MVC - 嵌套异常是java.lang.RuntimeException:org.postgresql.util.PSQLException:错误:关系“userid”不存在

时间:2014-04-08 00:36:23

标签: postgresql spring-mvc insert datasource dao

我正在创建一个简单的spring MVC应用程序,它从视图中获取数据并将其发送到我的机器上的PostgreSQL数据库。我一直在关注教程,并不完全熟悉处理数据访问对象中的连接设置的bean配置样式。我尝试发布到数据库时返回的错误如下:

HTTP状态500 - 请求处理失败;嵌套异常是java.lang.RuntimeException:org.postgresql.util.PSQLException:ERROR:relation" userid"不存在

"用户ID"是我用来测试的简单postgre表。

我的spring bean配置文件是:

    <?xml version="1.0" encoding="UTF-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName" value="org.postgresql.Driver" />
<property name="url" value="jdbc:postgresql://localhost:5432/postgres" />
<property name="username" value="postgres" />
<property name="password" value="kittens" />

</bean>

这是处理与DB的连接的DAO:

    package com.ARSmvcTest.dao.impl;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import javax.sql.DataSource;
    import com.ARSmvcTest.dao.arsDAO;
    import com.ARSmvcTest.models.ARS;


    public class JDBCarsDAO implements arsDAO {

private DataSource dataSource;

public void setDataSource(DataSource dataSource) {
    this.dataSource = dataSource;
}

public void insert(ARS ars){

    String sql = "INSERT INTO UserID " + 
                    "(ID_, First_, Last_, Email_, Pwd_) VALUES (?, ?, ?, ?, ?)";
    Connection conn = null;

    try {

            conn = dataSource.getConnection();
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, ars.getID_());
            ps.setString(2, ars.getFirst_());
            ps.setString(3, ars.getLast_());
            ps.setString(5, ars.getPwd_());
            ps.setString(4, ars.getEmail_());
            ps.executeUpdate();
            ps.close();

    } catch (SQLException e) {
        throw new RuntimeException(e);

    } finally {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {}
        }
    }

}

// FIND ARS BY ID WILL GO HERE EVENTUALLY

}

spring bean正在成功地将数据传递给连接,如下面的截图所示:

http://i.imgur.com/Hb7O5Qi.png(道歉,新用户,无法嵌入图片)

尽管dataSource对象从我上面的spring bean接收连接属性,但我注意到ConnectionProperties字段仍为null。

这是导致插入尝试异常的原因吗?

最后,我将在失败时将浏览器中显示的Exception和堆栈的屏幕截图包括在内:

http://i.imgur.com/prj1HtY.png(道歉,无法嵌入图片)

1 个答案:

答案 0 :(得分:0)

此异常直接从数据库(-driver)触发。 它告诉你名为&#34; userid&#34;不存在。

请检查:

  • 数据库上的表名和insert-statement
  • 如果表格是为您用于连接的用户读取和写入的;你需要获得正确的权利才能看到和写入表格

我希望这会对你有所帮助,因为这似乎是这种异常的典型错误。