【问题标题】:hibernate JPA unknown column in 'field list'“字段列表”中的休眠 JPA 未知列
【发布时间】:2018-05-06 04:38:22
【问题描述】:

我正在编写一个 Spring Boot + Hibernate JPA 应用程序,但我的休眠代码无法正常工作,下面是详细信息

实体类:

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

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "idUser")
    String id;

    @Column(name = "UserName")
    String name;

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

服务/DAO:

@Transactional
@Repository
public class SpringBootService {

    @PersistenceContext 
    private EntityManager entityManager;

    public boolean userLogin(UserBean bean) {

        String hql = "FROM UserBean WHERE id = ? ";
        int count = entityManager.createQuery(hql).setParameter(0, bean.getId())
                .getResultList().size();
        return count > 0 ? true : false;
    }

}

下面是我的桌子

我得到以下异常

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'userbean0_.id_user' in 'field list'
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_162]

我已经检查了实体类中的表名和列名都是正确的,这是一个简单的映射,我也不涉及第二个表。

【问题讨论】:

  • 我看到您的 IdUser 列是 int 而它在模型类中定义为 String。
  • 会有问题吗?在休眠 xml 配置中工作。
  • 我已将其更改为整数并尝试过,但我遇到了同样的问题

标签: hibernate spring-boot hibernate-jpa


【解决方案1】:

试试这个:

String hql = "FROM UserBean WHERE id = ?1 ";
    int count = entityManager.createQuery(hql).setParameter(1, bean.getId())
            .getResultList().size();

实体类:

import javax.persistence.*;
@Entity
@Table(name="user")
public class UserBean {

@Id
@Column(name = "idUser")
String id;

@Column(name = "UserName")
String name;

public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

}

【讨论】:

  • 您将主键声明为字符串。删除 Generated value 以获取字符串类型 id。
  • 我已将其更新为整数,并且我也尝试通过删除生成器来尝试它没有工作得到相同的错误
  • 我在实体类上面使用过。它为我工作。给你的堆栈跟踪
  • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)的“字段列表”中的未知列“userbean0_.id_user”~[na:1.8。 0_162] 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_162] 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_162]跨度>
  • 请检查我给定的整个班级和你的班级和“id = ?1”。不要错过 '?' 之后的 1。
【解决方案2】:

UserBean 模型不是实体对象。所以你不能用这个语句来执行

【讨论】:

  • 我已经为类声明了实体注解
猜你喜欢
  • 2016-10-07
  • 2013-02-10
  • 2014-03-19
  • 2015-05-28
  • 2017-09-03
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多