gpt4 book ai didi

java - org.hibernate.hql.internal.ast.QuerySyntaxException

转载 作者:行者123 更新时间:2023-11-30 11:06:30 25 4
gpt4 key购买 nike

我收到这个错误:

Caused by: javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: TblEmployee is not mapped [FROM TblEmployee]
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: TblEmployee` is not mapped

我搜索了互联网,它说我没有使用类名,而是使用表名。我确定我做的是正确的。我正在尝试连接到 sql server 数据库。

JPA:

package com.ray.adtf.jpa;

import java.io.Serializable;
import javax.persistence.*;
import java.sql.Timestamp;
/**
* The persistent class for the tblEmployee database table.
*/

@Entity
@Table(name="tblEmployee")
@NamedQuery(name="TblEmployee.findAll", query="SELECT t FROM TblEmployee t")
public class TblEmployee implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@Column(name="EmployeeID")
private int employeeID;

ejb包

com.ray.adtf.ejb;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.ray.adtf.jpa.TblEmployee;
import java.util.List;

@Stateless
public class GridMasterBean {

@PersistenceContext
private EntityManager em;

public List<TblEmployee> getDisplayGridList() {
return em.createQuery("select t FROM TblEmployee t", TblEmployee.class).getResultList();

}

持久性.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="Test-Persistence" transaction-type="RESOURCE_LOCAL">
<jta-data-source>java:/ProgramHierarchy</jta-data-source>
<class>com.ray.adtf.jpa.TblEmployee</class>
<class>com.ray.adtf.jpa.TblProgram</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
</persistence-unit>
</persistence>

我做错了什么?

最佳答案

您正在混合使用 HQL 和 JPA 类。

EntityManager 来自 JPA。 JPA 的查询将期望您使用 JPQL(JPA 查询语言),就像实体中准备好的查询(SELECT t FROM TblEmployee t)

现在,FROM TblEmployee 是 HQL(Hibernate 查询语言),当您不使用 Hibernate 作为 JPA 提供者而是直接使用它时(使用 Hibernate 类,例如 Session).

简而言之:

如果您要包含来自 java.persistence 的导入,请不要添加来自 org.hibernate 的导入并使用 JPQL(以 SELECT 开头) .

如果您直接使用 Hibernate,请不要使用像 EntityManager 和相关的 JPA 类。不过,您似乎可以将 JPQL 或 HQL 与 Hibernate 查询一起使用。

一些思想食物:

http://docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/ch11.html

http://what-when-how.com/hibernate/querying-with-hql-and-jpa-ql-hibernate/

关于java - org.hibernate.hql.internal.ast.QuerySyntaxException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29290750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com