I agree we could push this mapping to a lower lever, probably using the database map instead of generated code. But still I'd guess that one weven wants a place where the column can be addressed as int or char and not as boolean.

Just a crazy idea: Maybe we should introduce a defined layer for such mappings in 4.0. E.g. we could allow registering a "translator" class in the database map.

    Thomas

On Mon, 8 Jan 2007, Greg Monroe wrote:

A couple of extra thought about this:

We probably should think about fixing this for 4.0.  The
current correctBooleans(criteria, tablemap) is really a
work around for a Village limitation.  The Village free
implimentation should handle booleans correctly at the
lowest level.

As to the current implimentation, I agree that it would
add a lot of overhead to check all criterii at the BasePeer
level.  The basic reason is that at this level, you don't
know what table (if any) the column is associated with like
you do in the generated Peer classes.

That said, you might be able to simplify your application
re-write by looking at the correctBooleans(Criteria, TableMap)
method in the BasePeer.  Depending on how your criteria is
created, you probably can modify this with some code to
parse out the Table name and then locate the TableMap from
the associated DatabaseMap.

At least this would give you a single extra method to call.

-----Original Message-----
From: Thomas Fischer [mailto:[EMAIL PROTECTED]
Sent: Monday, January 08, 2007 4:05 AM
To: Apache Torque Developers List
Subject: Antwort: Problems executing
BasePeer.doUpdate(Criteria, Criteria, Connection)

Hi Tobias,

As booleanints and booleanchars behave as ints in java but
are integers and chars in the database, there needs to be a
mapping somewhere in the database layer. The "high-level"
methods "above" the mapping point will take booleans, the
"low-level" methods "below" the mapping point will take
integers and chars as arguments. Unfortunately for you, the
doUpdate(Criteria, Criteria, Connection) method is below the
mapping point.
Which makes a certain sense in my eyes, because you have to
know the types of the columns in the table to use this method.

I know of no plans to change this behaviour.

      Thomas

"Tobias Hilka" <[EMAIL PROTECTED]> schrieb am 08.01.2007 08:54:22:

Hi Thomas,

I am sure it works with Integer values. But it would be
very nice not
having
to think about converting booleanints and booleanchars when calling
this method. If this solution is not possible, I would have
to change
all occurrences of this call to use Integer values. But for
programmers just using Torque it is hard, always having to
know which
mehtod can be called with which kind of Boolean/Integer value.

Do you plan to change this behaviour?

Best regards,
Tobias

-----Urspr?ngliche Nachricht-----
Von: Thomas Fischer [mailto:[EMAIL PROTECTED]
Gesendet: Freitag, 5. Januar 2007 18:26
An: Apache Torque Developers List
Betreff: Antwort: Problems executing BasePeer.doUpdate(Criteria,
Criteria,
Connection)

If I remember correctly, the doUpdate(Criteria, Criteria,
Connection)
method
expects booleanints and booleancher being already converted
to Integer
and
Char. Have you tried using a new Integer(1) for true or a new
Integer(0) for false, respectively ?

     Thomas

"Tobias Hilka" <[EMAIL PROTECTED]> schrieb am 05.01.2007 18:15:47:

Hello everyone,

We are having trouble executing the doUpdate(Criteria, Criteria,
Connection)
method from BasePeer. The update we want to perform is
changing the
value
of
a field of type BOOLEANINT and we use a Boolean object to express
the new state of the object in the update Criteria, we
get an error
conserning
the
value we want to insert in the table.

We tried it both, for MSSQL Server and Oracle, and each
time we got
an
error
message.

For MSSQL:
org.apache.torque.TorqueException:
com.workingdogs.village.DataSetException:
Bad conversion: java.lang.NumberFormatException: For input string:
"false"
   at

org.apache.torque.util.BasePeer.throwTorqueException(BasePeer.
java:109)
   at

org.apache.torque.util.BasePeer.insertOrUpdateRecord(BasePeer.
java:635)
   at org.apache.torque.util.BasePeer.access$000(BasePeer.java:79)
   at
org.apache.torque.util.BasePeer$4.process(BasePeer.java:1220)
   at
org.apache.torque.util.BasePeer.processTables(BasePeer.java:1736)
   at org.apache.torque.util.BasePeer.doUpdate(BasePeer.java:1215)


For Oracle:
Don't have the exact message any more, but something
like: Update to
null not possible.


Debugging this problem I found that there is a doUpdate(Criteria,
Connection) method for each BasePeer. Therein the method
correctBooleans(criteria) is called which replaces Boolean.TRUE to
Integer(1) and Boolean.FALSE to Integer(0). I can not
find this call
in
the
BasePeer.doUpdate(Criteria, Criteria, Connection) method.

Could it be that this call is missing there or is there any other
treatment
of this problem there?

Thank you for your help.

Have a nice weekend.

Tobias



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Duke CE Privacy Statement
Please be advised that this e-mail and any files transmitted with it are 
confidential communication or may otherwise be privileged or confidential and 
are intended solely for the individual or entity to whom they are addressed.  
If you are not the intended recipient you may not rely on the contents of this 
email or any attachments, and we ask that you  please not read, copy or 
retransmit this communication, but reply to the sender and destroy the email, 
its contents, and all copies thereof immediately.  Any unauthorized 
dissemination, distribution or copying of this communication is strictly 
prohibited.



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to