'字段列表'中的未知列'userentity0_.last_name'

时间:2016-12-19 10:55:06

标签: java spring web

我正在使用Spring框架的Java Web项目,但在处理数据库时遇到问题(题字,连接)。

这是我的数据库SQL代码:

CREATE TABLE USER (
  Login             VARCHAR(20) NOT NULL,
  Password          VARCHAR(32) NOT NULL,
  LastName          VARCHAR(20) NOT NULL,
  Address           VARCHAR(60) NOT NULL,
  Email             VARCHAR(50) NOT NULL,
  MobilePhoneNumber INT(10)     NOT NULL,
  LoyaltyPoints     INT(4)      NOT NULL,
  PhoneNumber       INT(9),
  PRIMARY KEY (Login)
)

这是我的java模型类:

package com.spring.henallux.model;

public class User {

    private String login;

    private String password;

    private String lastName;

    private String address;

    private String email;

    private int mobilePhoneNumber;

    private int loyaltyPoints;

    private int phoneNumber;

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getPassword() {
        return password;
    }

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

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getEmail() {
        return email;
    }

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

    public int getMobilePhoneNumber() {
        return mobilePhoneNumber;
    }

    public void setMobilePhoneNumber(int mobilePhoneNumber) {
        this.mobilePhoneNumber = mobilePhoneNumber;
    }

    public int getLoyaltyPoints() {
        return loyaltyPoints;
    }

    public void setLoyaltyPoints(int loyaltyPoints) {
        this.loyaltyPoints = loyaltyPoints;
    }

    public int getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(int phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public User() {
        this.login = new String();
        this.password = new String();
        this.lastName = new String();
        this.address = new String();
        this.email = new String();
        this.mobilePhoneNumber = 0;
        this.loyaltyPoints = 0;
    }
}

这是我的实体类:

package com.spring.henallux.dataAccess.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "user")
public class UserEntity {

    @Id
    @Column(name = "Login")
    private String login;

    @Column(name = "Password", nullable = false)
    private String password;

    @Column(name = "LastName", nullable = false)
    private String lastName;

    @Column(name = "Address", nullable = false)
    private String address;

    @Column(name = "Email", nullable = false)
    private String email;

    @Column(name = "MobilePhoneNumber", nullable = false)
    private int mobilePhoneNumber;

    @Column(name = "LoyaltyPoints", nullable = false)
    private int loyaltyPoints;

    @Column(name = "PhoneNumber", nullable = true)
    private int phoneNumber;

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getPassword() {
        return password;
    }

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

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getEmail() {
        return email;
    }

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

    public int getMobilePhoneNumber() {
        return mobilePhoneNumber;
    }

    public void setMobilePhoneNumber(int mobilePhoneNumber) {
        this.mobilePhoneNumber = mobilePhoneNumber;
    }

    public int getLoyaltyPoints() {
        return loyaltyPoints;
    }

    public void setLoyaltyPoints(int loyaltyPoints) {
        this.loyaltyPoints = loyaltyPoints;
    }

    public int getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(int phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    /*@OneToOne(mappedBy="user", fetch=FetchType.LAZY)
    private CommandEntity command;*/
}

以下是错误消息:

  

2016-12-19 11:40:35.223 ERROR 7952 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper:'字段列表'中的未知列'userentity0_.last_name'       2016-12-19 11:40:35.225 INFO 7952 --- [nio-8080-exec-2] o.h.e.internal.DefaultLoadEventListener:HHH000327:执行加载命令时出错:org.hibernate.exception.SQLGrammarException:无法提取ResultSet       2016-12-19 11:40:35.249 ERROR 7952 --- [nio-8080-exec-2] oaccC [。[。[。[dispatcherServlet]:servlet [dispatcherServlet]的Servlet.service()与上下文路径[ / dreamsport]抛出异常[请求处理失败;嵌套异常是org.springframework.dao.InvalidDataAccessResourceUsageException:无法提取ResultSet; SQL [不适用];嵌套异常是org.hibernate.exception.SQLGrammarException:无法提取ResultSet]的根本原因       ...

当我尝试这个时,会发出这条消息:

public User save(User user){
    UserEntity userEntity = converter.userModelToUserEntity(user);
    userEntity = userRepository.save(userEntity);
    return converter.userEntityToUserModel(userEntity);
}

2 个答案:

答案 0 :(得分:0)

只使用没有模型类的实体类,并将实体名称更改为User 并且不要忘记将id列添加到DB

答案 1 :(得分:0)

实际上,如果要解决此问题,则必须避免在列名中使用大写字母。

例如代替:

@Column(name = "LastName", nullable = false)
    private String lastName;

使用

@Column(name = "last_name", nullable = false)