gpt4 book ai didi

java - 使用 jTable 和 Hibernate 进行分页和排序时出现异常

转载 作者:行者123 更新时间:2023-12-01 12:41:35 24 4
gpt4 key购买 nike

我遇到以下异常:

org.hibernate.exception.SQLGrammarException: could not execute query

Caused by: org.postgresql.util.PSQLException: ERREUR: constante non entière dans ORDER BY
Position: 222

我的 GareDAOIpml 中有一个方法来显示数据库中的所有行,我的方法 show() 是:

public List<Gare> show(int startIndex, int pageSize, String jtSorting) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<Gare> gares = null;
try {
Query q = session.createQuery("from Gare ORDER BY "+jtSorting+" ");
q.setFirstResult(startIndex);
q.setMaxResults(pageSize);
gares = (List<Gare>)q.list();

} catch (HibernateException e) {
e.printStackTrace();
session.getTransaction().rollback();
}
session.getTransaction().commit();
return gares;
}
<小时/>
<script type="text/javascript">
$(document).ready(function() {
$('#StudentTableContainer').jtable({
title : 'liste des gares',
paging: true,
pageSize: 10,
sorting: false,

actions : {
listAction : 'listergare',
updateAction: 'updategare',
deleteAction: 'deletegare'
},
fields : {
idgare : {
title : 'identifiant de la gare',
key : true,
list : false,
edit : false
},
usergare : {
title : 'utilisateur de la gare',
width : '25%',
list : true,
edit : true
},
ville : {
title : 'ville ',
width : '25%',
type: 'date',
list : true,
edit : true
}
}
});
$('#StudentTableContainer').jtable('load');
});

最佳答案

根据 David J. 在 [PostgreSQL] non-integer constant in ORDER BY: why exactly, and documentation? - Grokbase 中的说法,错误发生在:

A possible situation is that the user meant to use double-quotes to specify an identifier but instead used single quotes. Since a literal constant would not impact the sort order the planner should either discard it silently or throw an exception. The exception is preferred since the presence of a constant literal likely means whatever generated the query is broken and should be fixed.

检查查询中的ORDER BY子句。

<小时/>

另一方面,您可以启用将 Hibernate 生成的所有 SQL 语句记录到控制台的功能。在 Hibernate 配置文件 hibernate.cfg.xml 中添加下一个属性。

<prop key="hibernate.show_sql">true</prop>

另请参阅 How to print a query string with parameter values when using Hibernate

<小时/>

更新

您的 HQL 字符串中需要一个别名:

session.createQuery("SELECT g FROM Gare g" + 
(jtSorting != null ? " ORDER BY g." + jtSorting : ""));

查看更多Chapter 14. HQL: The Hibernate Query Language

关于java - 使用 jTable 和 Hibernate 进行分页和排序时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25048852/

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