[prev in list] [next in list] [prev in thread] [next in thread] 

List:       turbine-torque-dev
Subject:    RE: Problems executing BasePeer.doUpdate(Criteria, Criteria,
From:       Thomas Fischer <tfischer () apache ! org>
Date:       2007-01-13 10:53:21
Message-ID: 20070113024127.C70817 () minotaur ! apache ! org
[Download RAW message or body]

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:fischer@seitenbau.net]
> > 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" <thilka@vps.de> 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:fischer@seitenbau.net]
> > > 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" <thilka@vps.de> 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: torque-dev-unsubscribe@db.apache.org
> > > For additional commands, e-mail: torque-dev-help@db.apache.org
> > > 
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
> > For additional commands, e-mail: torque-dev-help@db.apache.org
> > 
> > 
> 
> 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: torque-dev-unsubscribe@db.apache.org
> For additional commands, e-mail: torque-dev-help@db.apache.org
> 
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic