嗨,我是新的hibernate我正在尝试做分页,但我得到一个错误接近极限,我将非常感谢任何帮助或指导,谢谢。
我的代码中的这一行中指向的错误
q.setFirstResult(0);
q.setMaxResults(2);
这是因为SQL server没有限制它使用offset和fetch吗?我真的不知道为什么也许有人能指导我谢谢你
配置XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection properties -->
<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="connection.url">jdbc:sqlserver://localhost:1433;databaseName=tabletest;user=test;password=test123;</property>
<property name="connection.username">test</property>
<property name="connection.password">test123</property>
<!-- JDBC connection pool (using the built-in) -->
<property name="connection.pool_size">100</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<property name="hibernate.current_session_context_class">thread</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Format the generated Sql -->
<property name="format_sql">true</property>
<!-- Dont Drop and re-create the database schema on startup,Just update it -->
<property name="hbm2ddl.auto">update</property>
<mapping class="" file="" jar="" package="" resource="com/kb/model/inserthbm.xml"/>
<mapping class="com.kb.model.inserttbl_backup" file="" jar="" package="" resource="com/kb/model/inserthbm_2.xml"/>
</session-factory>
</hibernate-configuration>
Java代码:
import com.kb.model.tbl_batch;
import java.util.Date;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import com.kb.model.tbl_batch;
import java.util.Iterator;
public class PaginationInHibernateWithQueryResults {
public static void main(String[] args)
{
Configuration c = new Configuration();
c.configure("/hibernate.cfg.xml");
SessionFactory sf = c.buildSessionFactory();
Session s = sf.openSession();
List<tbl_batch> result = null;
try
{
Query q = s.createQuery("from tbl_batch");
q.setFirstResult(0);
q.setMaxResults(2);
result = q.list(); // first two records, 0 and 1
// printing records using Iterator
Iterator it = result.iterator();
while(it.hasNext())
{
tbl_batch std = (tbl_batch) it.next();
System.out.println(std.getId() + " " + std.getusername() + " " + std.getpassword());
}
q.setFirstResult(2);
q.setMaxResults(3); // now you get 3 records starting from 2nd (0, 1, 2)
result = q.list(); // next three records, 2, 3 and 4
// printing elements with JDK 1.5 enhanced for loop
for(tbl_batch std : result)
{
System.out.println(std.getId() + " " + std.getusername() + " " + std.getpassword());
}
q.setFirstResult(5);
// q.setMaxResults(3); // this statement is not needed as earlier max results size is used
result = q.list(); // next two records, 5 and 6 (but here, we get only two
// because total records are 7 (0 to 6))
for(tbl_batch std : result)
{
System.out.println(std.getId() + " " + std.getusername() + " " + std.getpassword());
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
错误:“limit”附近的语法不正确。org.hibernate.exception.sqlgrammarexception:无法提取org.hibernate.exception.internal.sqlstateconversiondelegate.convert(sqlstateconversiondelegate.java:123)在org.hibernate.exception.internal.standardsqlexceptionconverter.convert(standardsqlexceptionconverter.49)在org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(sqlexceptionhelper.126)在.dolist(loader.java:2537)在org.hibernate.loader.loader.list(loader.java:2367)在org.hibernate.loader.loader.list(loader.java:2362)在org.hibernate.loader.hql.queryloader.list(queryloader.java:496)在org.hibernate.loader.hql.queryloader.list(querytranslatorimpl.list(querytranslatorimpl.java:387)在
您已经配置了MySQL方言,但正在访问SQL Server数据库。您必须设置SQLServer2012Dialect,以告诉Hibernate正确的数据库方言。
错误:
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
正确:
<property name="dialect">org.hibernate.dialect.SQLServer2012Dialect</property>
我只是想创建一个包含一列的表,并向其中添加一些值,但我得到了两个错误。一种是取消对db.close()的注释;句柄关闭太快,另一个是下面是代码。
首先,有类似的问题,比如1,2,3,4,5,但没有提到解决这个问题的答案。 LogCat错误 09-02 05:27:31.213: E/SQLiteDatabase(8442):错误插入日=2个月=9值=3.0年=2015 09-02 05:27:31.213: E/SQLiteDatabase(8442):android.database.sqlite.SQLiteExc0019:近空:语法错
问题内容: 我在堆栈中搜索,但没有一个达到最终答案。我的查询是这样的: 运行时,我收到语法分析错误: 我不知道该如何解决,问题出在哪里? 问题答案: 您需要稍微更改语法,请尝试以下操作:
问题内容: 我有一个小查询,并在其旁边放了一个联合查询。但是,联合中存在语法错误。 这是我收到的错误 问题答案: 我知道出了什么问题。您必须在查询的末尾且仅在末尾下订单。它给了我一个错误,因为它认为查询已结束。 做到了。
这是我的代码: LogCat说:12-11 23:43:50.553:E/AndroidRuntime(3706):android.database.sqlite.sqliteException:“create ;table”附近:语法错误(代码1):,编译时:create ;table PapersTable(_id integer ;primary ;key ;autoincrement,ti
问题内容: 我正在使用MySQL存储财务资料,并使用数据来构建每个帐户的所有交易记录等。出于性能方面的考虑-为了防止用户被庞大的表格所淹没-我对结果进行了分页。 现在,作为注册的一部分,我将显示该帐户的余额。因此,如果我每页显示20个事务,而我显示第二页,则使用如下数据: 事务0-19: 忽略它们-它们比正在查看的页面要新。 交易20-39: 从中选择所有内容-它们会显示出来。 事务40-??: