I have a similar issue with {{SQLServer2005LimitHandler.fillAliasInSelectClause ()}}. My Hibernate Version is 4.2.0.CR1. Here is the Stacktrace:
{noformat} java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:881) at java.lang.StringBuilder.substring(StringBuilder.java:55) at org.hibernate.dialect.pagination.SQLServer2005LimitHandler.fillAliasInSelectClause(SQLServer2005LimitHandler.java:159) at org.hibernate.dialect.pagination.SQLServer2005LimitHandler.getProcessedSql(SQLServer2005LimitHandler.java:86) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1826) at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1811) at org.hibernate.loader.Loader.doQuery(Loader.java:899) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) at org.hibernate.loader.Loader.doList(Loader.java:2516) at org.hibernate.loader.Loader.doList(Loader.java:2502) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2332) at org.hibernate.loader.Loader.list(Loader.java:2327) at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:338) at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1782) at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:231) at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:157) {noformat}
And this is how I reproduce it:
{code:java} Session session = ...; Transaction tx = session.beginTransaction(); try { int c; c = session.createSQLQuery("insert into TEST (T, O) values ('A', 'Z')").executeUpdate(); assertEquals(1, c); c = session.createSQLQuery("insert into TEST (T, O) values ('B', 'Z')").executeUpdate(); assertEquals(1, c); c = session.createSQLQuery("insert into TEST (T, O) values ('C', 'Z')").executeUpdate(); assertEquals(1, c); c = session.createSQLQuery("insert into TEST (T, O) values ('D', 'Z')").executeUpdate(); assertEquals(1, c); Query q = session.createSQLQuery("select T\nfrom\n TEST order by T asc"); q.setFirstResult(0); q.setMaxResults(2); List<Object> l = q.list(); assertEquals(2, l.size()); assertEquals("A", l.get(0)); assertEquals("B", l.get(1)); q.setFirstResult(2); l = q.list(); // << ERROR assertEquals(2, l.size()); assertEquals("C", l.get(0)); assertEquals("D", l.get(1)); } finally { tx.rollback(); session.close(); } {code}
The {{TEST}} table has the following DDL-SQL: {code:sql} create table TEST (T varchar(50) NOT NULL, O varchar(50) NOT NULL); {code}
Workaround: Put a space character at the begin and end of the word {{from}}.
|