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: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 <mailto: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> <mailto: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
<mailto:user-java-unsubscr...@ibatis.apache.org>
For additional commands, e-mail: user-java-h...@ibatis.apache.org
<mailto:user-java-h...@ibatis.apache.org>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org
<mailto:user-java-unsubscr...@ibatis.apache.org>
For additional commands, e-mail: user-java-h...@ibatis.apache.org
<mailto: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