You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Vikram Subbarao <vi...@directi.com> on 2010/02/09 11:35:48 UTC
java.util.UUID to postgres uuid column
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-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org
Re: java.util.UUID to postgres uuid column
Posted by Larry Meadors <la...@gmail.com>.
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 <vi...@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:vikram.s@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:vikram.s@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 <vi...@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-unsubscribe@ibatis.apache.org
>
> For additional commands, e-mail: user-java-help@ibatis.apache.org
>
>
>
>
>
>
>
>
>
> ---------------------------------------------------------------------
>
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>
> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org
Re: java.util.UUID to postgres uuid column
Posted by Vikram Subbarao <vi...@directi.com>.
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
>> form/xxxxxxxx/-/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 use*uniqueidentifier* columns to guarantee that rows
>> are uniquely identified across multiple copies of the table.
>>
>>
>>
>> Regards
>>
>> Meindert Hoving
>>
>>
>>
>>
>>
>> *From:* Vikram Subbarao [mailto:vikram.s@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:vikram.s@directi.com]
>> *Sent:* Thursday, February 11, 2010 7:50 AM
>> *To:* user-java@ibatis.apache.org <ma...@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 <vi...@directi.com> <ma...@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-unsubscribe@ibatis.apache.org <ma...@ibatis.apache.org>
>>
>> For additional commands, e-mail: user-java-help@ibatis.apache.org <ma...@ibatis.apache.org>
>>
>>
>>
>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org <ma...@ibatis.apache.org>
>> For additional commands, e-mail: user-java-help@ibatis.apache.org <ma...@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
>>
Re: java.util.UUID to postgres uuid column
Posted by Vikram Subbarao <vi...@directi.com>.
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
> form/xxxxxxxx/-/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 use*uniqueidentifier* columns to guarantee that rows are
> uniquely identified across multiple copies of the table.
>
>
>
> Regards
>
> Meindert Hoving
>
>
>
>
>
> *From:* Vikram Subbarao [mailto:vikram.s@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:vikram.s@directi.com]
> *Sent:* Thursday, February 11, 2010 7:50 AM
> *To:* user-java@ibatis.apache.org <ma...@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 <vi...@directi.com> <ma...@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-unsubscribe@ibatis.apache.org <ma...@ibatis.apache.org>
>
> For additional commands, e-mail: user-java-help@ibatis.apache.org <ma...@ibatis.apache.org>
>
>
>
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org <ma...@ibatis.apache.org>
> For additional commands, e-mail: user-java-help@ibatis.apache.org <ma...@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
>
RE: java.util.UUID to postgres uuid column
Posted by meindert <me...@eduflex.com>.
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:vikram.s@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:vikram.s@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
<ma...@directi.com> <vi...@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-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@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
Re: java.util.UUID to postgres uuid column
Posted by Vikram Subbarao <vi...@directi.com>.
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:vikram.s@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 <vi...@directi.com> <ma...@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-unsubscribe@ibatis.apache.org <ma...@ibatis.apache.org>
>> For additional commands, e-mail: user-java-help@ibatis.apache.org <ma...@ibatis.apache.org>
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org <ma...@ibatis.apache.org>
> For additional commands, e-mail: user-java-help@ibatis.apache.org <ma...@ibatis.apache.org>
>
>
RE: java.util.UUID to postgres uuid column
Posted by Niels Beekman <n....@wis.nl>.
Try #value#, this will use your parameter object directly. Using #id#
tries to obtain the id property from it.
________________________________
From: Vikram Subbarao [mailto:vikram.s@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 <vi...@directi.com>
<ma...@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-unsubscribe@ibatis.apache.org
For additional commands, e-mail:
user-java-help@ibatis.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org
Re: java.util.UUID to postgres uuid column
Posted by Vikram Subbarao <vi...@directi.com>.
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 <vi...@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-unsubscribe@ibatis.apache.org
>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@ibatis.apache.org
>
>
Re: java.util.UUID to postgres uuid column
Posted by Larry Meadors <la...@gmail.com>.
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 <vi...@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-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@ibatis.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org