Thread: Error with a hibernate query
The Java code: public class User { private Long id; private String username; private String password; //... } The DB table: create table USERS ( id SERIAL UNIQUE primary key, username VARCHAR(80) NOT NULL, password VARCHAR(80) NOT NULL, ... ); The Hibernate query: getHibernateTemplate().findByNamedParam("select u from User as u where u.username=:username and u.password=:password", new String[] { "username", "password" } From the stack, the following error seems to be on the JDBC driver side. Any suggestions of solving this problem? org.springframework.jdbc.BadSqlGrammarException: Bad SQL grammar [] in task 'Hibernate operation'; nested exception is java.sql.SQLException: ERROR: operator does not exist: character varying = bytea java.sql.SQLException: ERROR: operator does not exist: character varying = bytea at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1365) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1160) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:172) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:387) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:328) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:238) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92) at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:88) at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:875) at net.sf.hibernate.loader.Loader.doQuery(Loader.java:269) at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133) at net.sf.hibernate.loader.Loader.doList(Loader.java:1033) at net.sf.hibernate.loader.Loader.list(Loader.java:1024) at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854) at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1553) at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:39) at __________________________________ Do you Yahoo!? Yahoo! Small Business - Try our new resources site! http://smallbusiness.yahoo.com/resources/
Do you have a hibernate mapping file ? Dave Vernon wrote: >The Java code: > >public class User { > > private Long id; > private String username; > private String password; > > //... >} > >The DB table: > >create table USERS ( > id SERIAL UNIQUE primary key, > username VARCHAR(80) NOT NULL, > password VARCHAR(80) NOT NULL, > ... >); > >The Hibernate query: > >getHibernateTemplate().findByNamedParam("select u from > User as u where u.username=:username and >u.password=:password", new String[] { "username", >"password" } > >From the stack, the following error seems to be on the >JDBC driver side. Any suggestions of solving this >problem? > > >org.springframework.jdbc.BadSqlGrammarException: Bad >SQL grammar [] in task 'Hibernate operation'; nested >exception is java.sql.SQLException: ERROR: operator >does not exist: character varying = bytea >java.sql.SQLException: ERROR: operator does not exist: >character varying = bytea > at >org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1365) > at >org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1160) > at >org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:172) > at >org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:387) > at >org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:328) > at >org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:238) > at >org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92) > at >net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:88) > at >net.sf.hibernate.loader.Loader.getResultSet(Loader.java:875) > at >net.sf.hibernate.loader.Loader.doQuery(Loader.java:269) > at >net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133) > at >net.sf.hibernate.loader.Loader.doList(Loader.java:1033) > at >net.sf.hibernate.loader.Loader.list(Loader.java:1024) > at >net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854) > at >net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1553) > at >net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:39) > at > > > >__________________________________ >Do you Yahoo!? >Yahoo! Small Business - Try our new resources site! >http://smallbusiness.yahoo.com/resources/ > >---------------------------(end of broadcast)--------------------------- >TIP 4: Don't 'kill -9' the postmaster > > > > -- Dave Cramer http://www.postgresintl.com 519 939 0336 ICQ#14675561
ResultSet.relative(0) throws "Cannot move to index of 0" but should not as explain in the Javadoc.
From
David Gagnon
Date:
Hi all, I just ran into what i think is a compliance problem. I can't call ResultSet.relative(0) without getting in exception. As stated in the javadoc it's should just do NOTHING. Am I wrong? Best regards /David rs.relative(skipResults); if (index==0) > throw new SQLException("Cannot move to index of 0"); /** * Moves the cursor a relative number of rows, either positive or negative. * Attempting to move beyond the first/last row in the * result set positions the cursor before/after the * the first/last row. Calling <code>relative(0)</code> is valid, but does * not change the cursor position. * * <p>Note: Calling the method <code>relative(1)</code> * is identical to calling the method <code>next()</code> and * calling the method <code>relative(-1)</code> is identical * to calling the method <code>previous()</code>. * * @param rows an <code>int</code> specifying the number of rows to * move from the current row; a positive number moves the cursor * forward; a negative number moves the cursor backward * @return <code>true</code> if the cursor is on a row; * <code>false</code> otherwise * @exception SQLException if a database access error occurs, * there is no current row, or the result set type is * <code>TYPE_FORWARD_ONLY</code> * @since 1.2 */
On Mon, 18 Apr 2005, David Gagnon wrote: > I just ran into what i think is a compliance problem. I can't call > ResultSet.relative(0) without getting in exception. As stated in the > javadoc it's should just do NOTHING. This is a bug and is only present in the 7.4 tree. I've fixed it there. I'll gather up a couple more 7.4 changes and put out a new 7.4 release in a couple of days. For now I can offer you http://www.ejurka.com/pgsql/jars/dgagnon/pg74-dg-jdbc3.jar as I don't happen to have other compilers available. Kris Jurka
Thanks! I also try a rs.relative(-1) when I was positionned before the first row. I was not eable to get my result after that. I'm note sure about this one though.. And it's not easy to test it agains ... I you don't know about this one .. it's either a mistake I made myself or another bug. If you want I cant test it when I have a chance... Let me know! Thanks again /David Kris Jurka wrote: >On Mon, 18 Apr 2005, David Gagnon wrote: > > > >> I just ran into what i think is a compliance problem. I can't call >>ResultSet.relative(0) without getting in exception. As stated in the >>javadoc it's should just do NOTHING. >> >> > >This is a bug and is only present in the 7.4 tree. I've fixed it there. >I'll gather up a couple more 7.4 changes and put out a new 7.4 release in >a couple of days. For now I can offer you >http://www.ejurka.com/pgsql/jars/dgagnon/pg74-dg-jdbc3.jar as I don't >happen to have other compilers available. > >Kris Jurka > > >