by Sumo 05 Mar 17:15
Ebean bug with PostgreSQL?

I have a very simple object that I have annotated and am building a query with. I am getting an exception that looks like a bug as Postgres needs the AS keyword when aliasing a column. Am I missing some configuration setting?

The code is I use is:

EbeanServer server = Ebean.getServer(null);
Query trackQuery = server.createQuery(Track.class);
iterator = trackQuery.findList().iterator();

And the exception is:

javax.persistence.PersistenceException: Query threw SQLException:ERROR: syntax error at or near "c0" Query was:
select t.id c0, t.name c1, t.gid c2, t.length c3, t.artist c4
from track t


at com.avaje.ebean.server.query.DefaultOrmQueryEngineHelper.findMany(DefaultOrmQueryEngineHelper.java:110)
at com.avaje.ebean.server.query.DefaultOrmQueryEngine.findMany(DefaultOrmQueryEngine.java:93)
at com.avaje.ebean.server.core.QueryRequest.findList(QueryRequest.java:192)
at com.avaje.ebean.server.core.DefaultServer.findList(DefaultServer.java:1000)
at com.avaje.ebean.query.DefaultOrmQuery.findList(DefaultOrmQuery.java:419)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
.
.
.

Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "c0"
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
at com.avaje.ebean.server.lib.sql.ExtendedPreparedStatement.executeQuery(ExtendedPreparedStatement.java:146)
at com.avaje.ebean.server.query.CQuery.prepareBindExecuteQuery(CQuery.java:325)
at com.avaje.ebean.server.query.DefaultOrmQueryEngineHelper.findMany(DefaultOrmQueryEngineHelper.java:87)
... 28 more

05 Mar 19:34
by Rob

No, that will be a bug (with Ebean & Postgres).

If you put in ebean.properties one of the entries below (first one will change the column alias for all EbeanServers and the second one for just the EbeanServer called "XXX").

## change alias for all EbeanServers
ebean.columnAliasPrefix=as c_

## change alias for the server called "XXX"
ebean.XXX.columnAliasPrefix=as c_


.. then that should create as c_0, ... as c_1 etc.

Let me know if that doesn't sort you out.

I'll log a bug for this ... Ebean should do this automatically for Postgres.

Thanks, Rob.

07 Mar 03:07
by Rob

Logged as BUG 87 : Postgres requires "AS" keyword for column alias

Fixed in HEAD.

Create a New Topic

Title:
Body:
 
Introduction User Guide (pdf) Install/Configure Public JavaDoc Whitepapers
General Database Specific Byte Code Deployment Annotations Features
Top Bugs Top Enhancements
woResponse