geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gianny Damour <gianny.dam...@optusnet.com.au>
Subject Re: FindByPrimaryKey
Date Thu, 06 Apr 2006 10:16:18 GMT
Hi Matt,

In trunk, we already have the individual update statement strategy 
turned on by default. If you want to switch back to the universal update 
command, i.e the "CASE THEN" approach, then you can flag an entity with 
the static-sql element.

So, I think that we are ok.

Thanks,
Gianny

Matt Hogstrom wrote:

> Gianny,
>
> I think we should consider changing the default behaviour for "SET 
> <column> = CASE WHEN ? THEN ?
> > ELSE <column>".  DB2 doesn't like it, Oracle doesn't like it, Derby 
> doesn't like it and Firebird apparently doesn't like it :)
>
> I think I'd be in favor of a universal update command that updates all 
> columns regardless if they have changed or individual update 
> statements for only the columns that have changed.
>
> What are your thoughts?
>
> Matt
>
> Gianny Damour wrote:
>
>> 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)

>>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>



Mime
View raw message