内部异常:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:“字段列表”中的“名称”列未知

拉米罗·阿里斯佩

我在这个问题上已经有一段时间了,我正在本地机器上开发一个Java Web 应用程序,使用MySQL并使用EclipseLink (JPA 2.1)

一切都很好,甚至我正在访问我的应用程序,但我意识到表'usuario'需要其他列,因此在该表 'usuario' 中我“更改”并插入五个新列。

我如何在表上插入这些新列我重新生成了Entity Class,但是由于某种原因,当我现在尝试登录时会抛出一个错误并且无法访问我的应用程序:

这是数据库表:在此处输入图片说明

实体类:(比我插入的新列是:全名、电子邮件、地址、城市、州

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Ramiro
 */
@Entity
@Table(name = "usuario")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Usuario.findAll", query = "SELECT u FROM Usuario u")
    , @NamedQuery(name = "Usuario.findByPkUsuario", query = "SELECT u FROM Usuario u WHERE u.pkUsuario = :pkUsuario")
    , @NamedQuery(name = "Usuario.findByUsuario", query = "SELECT u FROM Usuario u WHERE u.usuario = :usuario")
    , @NamedQuery(name = "Usuario.findByContrasenia", query = "SELECT u FROM Usuario u WHERE u.contrasenia = :contrasenia")
    , @NamedQuery(name = "Usuario.findByFechaCreacion", query = "SELECT u FROM Usuario u WHERE u.fechaCreacion = :fechaCreacion")
    , @NamedQuery(name = "Usuario.findByFechaUltimaEdicion", query = "SELECT u FROM Usuario u WHERE u.fechaUltimaEdicion = :fechaUltimaEdicion")
    , @NamedQuery(name = "Usuario.findByTipoUsuario", query = "SELECT u FROM Usuario u WHERE u.tipoUsuario = :tipoUsuario")
    , @NamedQuery(name = "Usuario.findByEstatus", query = "SELECT u FROM Usuario u WHERE u.estatus = :estatus")
    , @NamedQuery(name = "Usuario.findByNombreCompleto", query = "SELECT u FROM Usuario u WHERE u.nombreCompleto = :nombreCompleto")
    , @NamedQuery(name = "Usuario.findByEmail", query = "SELECT u FROM Usuario u WHERE u.email = :email")
    , @NamedQuery(name = "Usuario.findByDireccion", query = "SELECT u FROM Usuario u WHERE u.direccion = :direccion")
    , @NamedQuery(name = "Usuario.findByCiudad", query = "SELECT u FROM Usuario u WHERE u.ciudad = :ciudad")
    , @NamedQuery(name = "Usuario.findByEstado", query = "SELECT u FROM Usuario u WHERE u.estado = :estado")})
public class Usuario implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "pkUsuario")
    private Integer pkUsuario;
    @Basic(optional = false)
    @Column(name = "usuario")
    private String usuario;
    @Basic(optional = false)
    @Column(name = "contrasenia")
    private String contrasenia;
    @Basic(optional = false)
    @Column(name = "fechaCreacion")
    @Temporal(TemporalType.DATE)
    private Date fechaCreacion;
    @Basic(optional = false)
    @Column(name = "fechaUltimaEdicion")
    @Temporal(TemporalType.DATE)
    private Date fechaUltimaEdicion;
    @Basic(optional = false)
    @Column(name = "tipoUsuario")
    private int tipoUsuario;
    @Basic(optional = false)
    @Column(name = "estatus")
    private int estatus;
    @Basic(optional = false)
    @Column(name = "nombreCompleto")
    private String nombreCompleto;
    @Basic(optional = false)
    @Column(name = "email")
    private String email;
    @Basic(optional = false)
    @Column(name = "direccion")
    private String direccion;
    @Basic(optional = false)
    @Column(name = "ciudad")
    private String ciudad;
    @Basic(optional = false)
    @Column(name = "estado")
    private String estado;

    public Usuario() {
    }

    public Usuario(Integer pkUsuario) {
        this.pkUsuario = pkUsuario;
    }

    public Usuario(Integer pkUsuario, String usuario, String contrasenia, Date fechaCreacion, Date fechaUltimaEdicion, int tipoUsuario, int estatus, String nombreCompleto, String email, String direccion, String ciudad, String estado) {
        this.pkUsuario = pkUsuario;
        this.usuario = usuario;
        this.contrasenia = contrasenia;
        this.fechaCreacion = fechaCreacion;
        this.fechaUltimaEdicion = fechaUltimaEdicion;
        this.tipoUsuario = tipoUsuario;
        this.estatus = estatus;
        this.nombreCompleto = nombreCompleto;
        this.email = email;
        this.direccion = direccion;
        this.ciudad = ciudad;
        this.estado = estado;
    }

    public Integer getPkUsuario() {
        return pkUsuario;
    }

    public void setPkUsuario(Integer pkUsuario) {
        this.pkUsuario = pkUsuario;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getContrasenia() {
        return contrasenia;
    }

    public void setContrasenia(String contrasenia) {
        this.contrasenia = contrasenia;
    }

    public Date getFechaCreacion() {
        return fechaCreacion;
    }

    public void setFechaCreacion(Date fechaCreacion) {
        this.fechaCreacion = fechaCreacion;
    }

    public Date getFechaUltimaEdicion() {
        return fechaUltimaEdicion;
    }

    public void setFechaUltimaEdicion(Date fechaUltimaEdicion) {
        this.fechaUltimaEdicion = fechaUltimaEdicion;
    }

    public int getTipoUsuario() {
        return tipoUsuario;
    }

    public void setTipoUsuario(int tipoUsuario) {
        this.tipoUsuario = tipoUsuario;
    }

    public int getEstatus() {
        return estatus;
    }

    public void setEstatus(int estatus) {
        this.estatus = estatus;
    }

    public String getNombreCompleto() {
        return nombreCompleto;
    }

    public void setNombreCompleto(String nombreCompleto) {
        this.nombreCompleto = nombreCompleto;
    }

    public String getEmail() {
        return email;
    }

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

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getCiudad() {
        return ciudad;
    }

    public void setCiudad(String ciudad) {
        this.ciudad = ciudad;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (pkUsuario != null ? pkUsuario.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Usuario)) {
            return false;
        }
        Usuario other = (Usuario) object;
        if ((this.pkUsuario == null && other.pkUsuario != null) || (this.pkUsuario != null && !this.pkUsuario.equals(other.pkUsuario))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "hg.entity.Usuario[ pkUsuario=" + pkUsuario + " ]";
    }

    }

注意:如果我删除实体上的五个新参数,则不会再出现错误(但我需要这些参数)。

//搜索用户是否存在(这里是抛出错误的地方)

private List<Usuario> findUsrByUsrPass(String usr, EntityManager em){        
    List<Usuario> results = em.createNamedQuery("Usuario.findByUser").setParameter("usuario", usr).getResultList();
    return results;   
}

错误:

    [EL Info]: 2017-05-04 18:26:04.041--ServerSession(1801367825)--EclipseLink, version: Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd
[EL Info]: connection: 2017-05-04 18:26:04.598--ServerSession(1801367825)--file:/C:/Program Files (x86)/Apache Software Foundation/Apache Tomcat 8.0.27/temp/15-Hagen/WEB-INF/lib/HagenBack.jar_HagenBackPU login successful
javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'ciudad' in 'field list'
Error Code: 1054
Call: SELECT pkUsuario, ciudad, contrasenia, direccion, email, estado, estatus, fechaCreacion, fechaUltimaEdicion, nombreCompleto, tipoUsuario, usuario FROM usuario WHERE (usuario = ?)
    bind => [1 parameter bound]
Query: ReadAllQuery(name="Usuario.findByUsuario" referenceClass=Usuario sql="SELECT pkUsuario, ciudad, contrasenia, direccion, email, estado, estatus, fechaCreacion, fechaUltimaEdicion, nombreCompleto, tipoUsuario, usuario FROM usuario WHERE (usuario = ?)")
    at org.eclipse.persistence.internal.jpa.QueryImpl.getDetailedException(QueryImpl.java:378)
    at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:260)
    at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:469)

我可以将这些列留在数据库上,如果我删除实体的那五个新列,我可以再次访问我的应用程序。

¿我失去了什么?¿我的实体有问题还是来自 EclipseLink 的错误?

我已经尝试删除并重新生成表“usuario”、清理和构建应用程序等;等等; 但看起来 MySQL 不会刷新内存上的表或类似的东西。

我很感激任何帮助。问候。

拉米罗·阿里斯佩

我发现的解决方案是删除数据库上的所有表,然后重新插入,然后重新创建所有实体(来自数据库的实体类)。我知道如果表有数千个值,这在将来的使用中是一个糟糕的解决方案,但目前,它有效。问候。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档