【问题标题】:JPA query exception unexpected (JPA 查询异常意外(
【发布时间】:2012-04-09 23:03:48
【问题描述】:

您好,这是我的实体 StudentEntity.java,

  @Entity
  @NamedQueries({
    @NamedQuery(name="totalStudentSQLQuery",
                query="select count(*) as MAX_STUDENT from tblstudent"),    
    @NamedQuery(name="queryForPagination",
                query="SELECT s.studentid AS studentid, s.studentname AS studentname, s.contactno AS contactno, s.deptid AS deptid "+
                        "FROM (SELECT Row_number() OVER() AS row_num, studentid, studentname, contactno, deptid FROM   tblstudent order by studentId asc) s" +
                        " WHERE  s.row_num >=:minRow AND s.row_num <=:maxRow")
  })
  @Table(name="TBLSTUDENT")
  public class StudentEntity implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 100034222342L;

    @Id
    @Column(name="STUDENTID")
    private Integer studentId;

    @Column(name="STUDENTNAME")
    private String studentName;

    @Column(name="CONTACTNO")
    private String contactNumber;
    .....
    .....

  }     

我正在使用 Hibernate 4.0 jars 作为持久性提供程序,并使用 JPA,

我的persistense.xml如下,

  <?xml version="1.0" encoding="UTF-8"?>
  <persistence 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_2_0.xsd"
               version="2.0">
    <persistence-unit name="forPractise" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>jdbc/app</jta-data-source>
        <class>com.entity.StudentEntity</class>
        <class>com.entity.DeptEntity</class>
        <properties>
                <property name="hibernate.dialect"  value="org.hibernate.dialect.DerbyDialect"  />
                <property name="hibernate.show_sql" value="true" />
                <property name="hibernate.format_sql" value="true" />               
            </properties>
    </persistence-unit>
  </persistence>

现在,当我创建此项目的 war 文件并尝试在 Glassfish 服务器中部署时,出现错误 意外的标记: ( org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:(靠近第 1 行,第 116 列 [SELECT s.studentid AS studentid,s.studentname AS studentname,s.contactno AS contactno,s.deptid AS deptid FROM(SELECT Row_number() OVER() AS row_num, studentid, studentname, contactno, deptid FROM tblstudent order by studentId asc) s WHERE s.row_num >=:minRow AND s.row_num

谁能告诉我是不是我在 NamedQuery 中犯了错误,

我正在使用 Derby 数据库。

【问题讨论】:

    标签: java jakarta-ee jpa ejb-3.0 jpa-2.0


    【解决方案1】:

    看起来您正在使用标准 SQL 查询。对于 NamedQueries,您必须使用 JPA-QL 定义查询。

    【讨论】:

      【解决方案2】:

      如果您想使用经典的 SQL 数据库依赖,您必须使用 @NamedNativeQuery。

      【讨论】:

        猜你喜欢
        • 2011-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-16
        • 2015-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多