Hi Olivier,
I think that Firebird does not like the generated UPDATE statements.
More accurately it does not like the "SET <column> = CASE WHEN ? THEN ?
ELSE <column>" syntax.
This problem has been fixed in head as the UPDATE statements will only
use the "SET <column> = ?" syntax. Meanwhile, do you know what the
Firebird syntax is to achieve the same result than "SET <column> = CASE
WHEN ? THEN ? ELSE <column>". If you give us this syntax, I think that
it should be quick easy to fix this problem (basically, we can implement
a DBSyntaxFactory and enable it by setting the db-syntax-factory element
of the openejb-jar DD).
Thanks,
Gianny
Olivier Voutat wrote:
Lol, there is no space, it is just the Ctrl-c Ctrl-v, cause there was
no space in my writing e-mail window so it did a return line.
Anyway, maybe it is a tip of which is the problem, but I tried to use
my findBySituation, and it works BUT I don't get to alter the LocalCar
(s) returned.
My code in my SessionBean
<snip>
00:34:32,073 WARN [GeronimoConnectionEventListener]
connectionErrorOccurred called with null
org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544569. Dynamic
SQL Error
SQL error code = -104
Token unknown - line 1, char 39
THEN
at
org.firebirdsql.jdbc.AbstractPreparedStatement.<init>(AbstractPreparedStatement.java:118)
at org.firebirdsql.jdbc.FBPreparedStatement
.<init>(FBPreparedStatement.java:40)
<snip>
Caused by: org.tranql.ql.QueryException: Error executing statement:
UPDATE CARROS SET MARCA = CASE WHEN ? THEN ? ELSE MARCA END, MODELO =
CASE WHEN ? THEN ? ELSE MODELO END, PLACA = CASE WHEN ? THEN ? ELSE
PLACA END, QUILOMETRAGEM = CASE WHEN ? THEN ? ELSE QUILOMETRAGEM END,
COR = CASE WHEN ? THEN ? ELSE COR END, SITUACAO = CASE WHEN ? THEN ?
ELSE SITUACAO END, TIPO = CASE WHEN ? THEN ? ELSE TIPO END, DIARIA =
CASE WHEN ? THEN ? ELSE DIARIA END WHERE CHASSI = ?
at
org.tranql.sql.jdbc.JDBCUpdateCommand.execute(JDBCUpdateCommand.java:69)
at
org.tranql.cache.SimpleFlushStrategy.flush(SimpleFlushStrategy.java:64)
at org.tranql.cache.SimpleFlushStrategy.flush
(SimpleFlushStrategy.java:49)
at
org.tranql.cache.cache.InTxCacheTracker.flush(InTxCacheTracker.java:41)
at org.tranql.cache.InTxCache.flush(InTxCache.java:86)
at
org.apache.geronimo.transaction.context.AbstractTransactionContext.flushState
(AbstractTransactionContext.java:115)
at
org.apache.geronimo.transaction.context.InheritableTransactionContext.complete(InheritableTransactionContext.java:175)
... 24 more
Caused by: org.firebirdsql.jdbc.FBSQLExcep tion : GDS Exception.
335544569. Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, char 39
THEN
at
org.firebirdsql.jdbc.AbstractPreparedStatement.<init>(AbstractPreparedStatement.java:118)