I think the combination of #value# and the type handler should work - it may take some messing around and debugging to figure out what exactly is going on.
Unfortunately, I just do not have the free time to do that. :-) If you would like me to block out a couple of hours to figure it out for you, feel free to contact me off list, and I will be glad to provide you with some additional professional support. Larry On Sun, Feb 28, 2010 at 2:49 AM, Vikram Subbarao <vikra...@directi.com> wrote: > Hello All, > > Any idea on this? > > Regards > Vikram > > > Vikram Subbarao wrote: > > The uuid in database is stored in a column of type uuid supported by > postgres db. Now when i use the query below, i am passing a string and would > become VARCHAR to database which results in postgres db complaining that it > cannot compare 'Character Varying' and 'uuid' values. I understand implicit > casts happen in certain databases (like sql server), but not in postgres. > > Also, there are performance issues shuttling between UUID (128 bits) and > String (36 Chars for type 4 uuid = 576 bits) and then back for a frequent > query like this which seems mostly un-necessary if ibatis could understand > and add this as a known type, especially since postgress jdbc supports > java.util.UUID as a type. > > Regards > Vikram > > meindert wrote: > > Hi Vikram, > > > > I don’t use the UUID myself and can’t answer your question from experience, > but I think the real question would be how the ID is stored in the DB. > > IBATIS error message is is correct to say that the UUID object does not have > a value (like a string or int object) and there is no UUID.getId() > > Assuming you use a ‘uniqueidentifier’ type on the (sql server) db side, I > would think you need to query the ID as a string; > > > > <select id="findById" parameterClass="string" resultMap="fullResult" > cacheModel="cache"> > SELECT users.* > FROM users > WHERE id = #value# > </select> > > sqlMapClientTemplate.queryForObject("User.findById", id.toString()); > > > > From sql books online: > > A column or local variable of uniqueidentifier data type can be initialized > to a value in the following ways: > > By using the NEWID function. > By converting from a string constant in the > formxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, in which each x is a hexadecimal > digit in the range 0-9 or a-f. For example, > 6F9619FF-8B86-D011-B42D-00C04FC964FF is a valid uniqueidentifier value. > > Comparison operators can be used with uniqueidentifier values. However, > ordering is not implemented by comparing the bit patterns of the two values. > The only operations that can be performed against a uniqueidentifier value > are comparisons (=, <>, <, >, <=, >=) and checking for NULL (IS NULL and IS > NOT NULL). No other arithmetic operators can be used. All column constraints > and properties, except IDENTITY, can be used on the uniqueidentifier data > type. > > Merge replication and transactional replication with updating subscriptions > useuniqueidentifier columns to guarantee that rows are uniquely identified > across multiple copies of the table. > > > > Regards > > Meindert Hoving > > > > > > From: Vikram Subbarao [mailto:vikra...@directi.com] > Sent: 11 February 2010 10:13 AM > To: user-java@ibatis.apache.org > Subject: Re: java.util.UUID to postgres uuid column > > > > Does not work - > > com.ibatis.common.beans.ProbeException: There is no READABLE property > named 'value' in class 'java.util.UUID' > > Niels Beekman wrote: > > Try #value#, this will use your parameter object directly. Using #id# tries > to obtain the id property from it. > > > > ________________________________ > > From: Vikram Subbarao [mailto:vikra...@directi.com] > Sent: Thursday, February 11, 2010 7:50 AM > To: user-java@ibatis.apache.org > Subject: Re: java.util.UUID to postgres uuid column > > > > With this approach i tried this in a query - > > <select id="findById" parameterClass="java.util.UUID" > resultMap="fullResult" cacheModel="cache"> > SELECT users.* > FROM users > WHERE id = #id# > </select> > > > When i call this query as - > > sqlMapClientTemplate.queryForObject("User.findById", id); > > Note: id is an java.util.UUID object. > > I get an error - > > com.ibatis.common.beans.ProbeException: There is no READABLE property > named 'id' in class 'java.util.UUID' > > Regards > Vikram > > Larry Meadors wrote: > > This might work: > > > > public class UUIDTypeHandler implements TypeHandlerCallback { > > @Override > > public void setParameter(ParameterSetter setter, Object parameter) > > throws SQLException { > > setter.setObject(parameter); > > } > > > > @Override > > public Object getResult(ResultGetter getter) throws SQLException { > > return getter.getObject(); > > } > > > > @Override > > public Object valueOf(String s) { > > return UUID.fromString(s); > > } > > } > > > > Add this in your sqlmapconfig.xml: > > > > <typeAlias alias="UUID" type="java.util.UUID" /> > > <typeHandler javaType="UUID" callback="UUIDTypeHandler"/> > > > > Larry > > > > > > > > On Tue, Feb 9, 2010 at 3:35 AM, Vikram Subbarao <vikra...@directi.com> > wrote: > > > > I am using postgres db and would like to map a java.util.UUID to a postgres > > uuid column. Latest postgres driver supports mapping of this if i was > > directly creating my prepared statements but since i use ibatis inbetween, i > > am unable to achive this as ibatis does not seem to understand that > > java.util.UUID can be based down to jdbc. I could use typehandler if the db > > column was a VARCHAR, but since the postgres db is a 'uuid' type, i have no > > option but to use the driver supported option of using java.util.UUID, but > > it does not work with ibatis for me. > > > > Please help me if some one has a solution to this. > > > > Regards > > Vikram > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org > > For additional commands, e-mail: user-java-h...@ibatis.apache.org > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org > > For additional commands, e-mail: user-java-h...@ibatis.apache.org > > > > > > No virus found in this incoming message. > Checked by AVG - www.avg.com > Version: 9.0.733 / Virus Database: 271.1.1/2676 - Release Date: 02/10/10 > 21:38:00 --------------------------------------------------------------------- To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org For additional commands, e-mail: user-java-h...@ibatis.apache.org