Spring org.hibernate.hql.internal.ast.QuerySyntaxException:未映射员工[来自员工];
我正试图从我使用SpringBoot和hibernate进行此项目的数据库中获取员工列表。 据我说,我做的每件事都是对的,但我得到了这个丑陋的例外Spring org.hibernate.hql.internal.ast.QuerySyntaxException:未映射员工[来自员工];,spring,hibernate,spring-boot,Spring,Hibernate,Spring Boot,我正试图从我使用SpringBoot和hibernate进行此项目的数据库中获取员工列表。 据我说,我做的每件事都是对的,但我得到了这个丑陋的例外 org.hibernate.hql.internal.ast.QuerySyntaxException: Employee is not mapped [from Employee]; 我几乎尝试了所有在互联网上的解决方案,一些人建议POJO名称和查询中使用的名称必须相同,我也这样做了 @Entity @Table(name="employee")
org.hibernate.hql.internal.ast.QuerySyntaxException: Employee is not mapped [from Employee];
我几乎尝试了所有在互联网上的解决方案,一些人建议POJO名称和查询中使用的名称必须相同,我也这样做了
@Entity
@Table(name="employee")
public class Employee {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="first_name")
private String firstName;
@Column(name="last_name")
private String lastName;
@Column(name="email")
private String email;
public Employee() {
}
public Employee(String firstName, String lastName, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Employee [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email + "]";
}
}
@存储库
公共类EmployeeDaoImpl实现EmployeeDao{
@自动连线
私人实体管理者实体;
@凌驾
@交易的
公共列表列表所有员工(){
//创建会话
Session Session=entity.unwrap(Session.class);
Query employee=session.createQuery(“来自employee”,employee.class);
return employee.getResultList();
}
}
只有当您在查询中提到的表名与实体不匹配时,才会出现此问题。
查询中使用的表名不是真实数据库中的表名,它应该是实体类的名称。如果试图映射到数据库表,而实际的实体类名不同,则会抛出此错误。还要注意的是,查询字符串应该具有实体类名的确切大小写(大写或小写)才能正常工作。如果是myql,那么您是否使用myql?如果是mysql,请在数据库中检查您的表名大小写是否为大写或小写。您是否使用常规打包(树根中的应用)?如果没有,请尝试@EntityScan我使用了与我的pojo名称相同的名称是Employee,在查询中也引用了相同的员工感谢您的建议我发现了我的错误,这是程序包名称中的一个打字错误我使用了相同的名称我的实体名称和查询中的名称相同u可以从上面的代码中进行检查
@Repository
public class EmployeeDaoImpl implements EmployeeDao {
@Autowired
private EntityManager entity;
@Override
@Transactional
public List<Employee> ListAllEmployee() {
//create Session
Session session=entity.unwrap(Session.class);
Query<Employee> employee=session.createQuery("from Employee",Employee.class);
return employee.getResultList();
}
}