【问题标题】:nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet Hibernate+SpringMVC嵌套异常是 org.hibernate.exception.SQLGrammarException: could not extract ResultSet Hibernate+SpringMVC
【发布时间】:2016-04-21 11:29:31
【问题描述】:

我正在尝试从数据库中获取记录,但出现上述错误

这是我的类,带有适当的 getter 和 setter

public class User {
    private int id;
    private String username;
    private String password;
    private String email;

我还使用以下配置创建了数据库并将数据插入其中

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/usersdb"/>
        <property name="username" value="root"/>
        <property name="password" value=""/>
    </bean>   

这是完整的堆栈跟踪

SEVERE: Servlet.service() for servlet [appServlet] in context with path [/spring] threw exception [Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'usersdb.users' doesn't exist
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)

请问我在 Spring MVC 上使用 Hibernate 时会出现什么问题

User.java的完整代码

package net.codejava.spring.model;

public class User {
    private int id;
    private String username;
    private String password;
    private String email;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

}

【问题讨论】:

  • 请发布完整的堆栈跟踪
  • 我已经添加了完整的堆栈跟踪..
  • 您确定该表存在于您的数据库中。错误提示表不存在。
  • 你能检查一下你是否有一个或多个用户作为表名吗?
  • 表名是users

标签: java spring hibernate maven


【解决方案1】:

你错过了几件事

import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;


import java.io.Serializable;
import java.util.Date;
@Entity
@Table(name="User")

public class User implements Serializable{

【讨论】:

  • 应该在哪里添加这个
  • 请问使用注解的pom依赖是什么
  • token "annotation" 语法错误,删除这个token
  • 我要从令牌实体中删除注释
  • 没有。它必须看起来像我在代码中提到的那样
【解决方案2】:

将此添加到您的课程中:

@Entity
@Table(name="User") or @Table(name="Users")
public class User

将此依赖项添加到您的pom.xml。不知道您使用的是什么版本的休眠或弹簧。如果您有不同的版本,只需更换版本即可。

<properties>
        <springframework.version>4.0.6.RELEASE</springframework.version>
        <hibernate.version>4.3.6.Final</hibernate.version>
</properties>


<dependencies>

    <!-- Spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${springframework.version}</version>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
    </dependency>

    <!-- MySQL -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.connector.version}</version>
    </dependency>

    <!-- Joda-Time -->
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${joda-time.version}</version>
    </dependency>

    <!-- To map JodaTime with database type -->
    <dependency>
        <groupId>org.jadira.usertype</groupId>
        <artifactId>usertype.core</artifactId>
        <version>3.0.0.CR1</version>
    </dependency>

</dependencies>

【讨论】:

    【解决方案3】:

    您是否创建了“用户”表?如果用户类被映射到表使用注释@Entity 和@Table(name="users")。试试这个。

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 1970-01-01
      • 2015-07-01
      • 2018-02-04
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 2015-06-25
      相关资源
      最近更新 更多