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 "m.montano" <ko...@gmail.com> on 2009/05/21 16:00:57 UTC
MS Sql Server 2000 and access to a CHAR column
Hi all,
I'm developing a j2ee web application using ibatis to interact with a ms sql
server 2000.
I've to perform this operation:
<insert id="insertAnnuncioFileMD"
parameterClass="tsf.sara.sqlmap.AnnuncioFileMD">
begin transaction
declare @id_audio varchar(20)
set @id_audio = cast(IDENT_CURRENT('filemd') + ident_incr('filemd')
as varchar)
INSERT INTO filemd(fname, fsize, furl, fcdate, station_id, status,
diagMask, md5sig, msgId, idaudio)
SELECT #fname#, #fsize#, #furl#, #fcdate#, id,#status#,
#diagMask#, #md5sig#, #msgId#, #idaudio#
FROM station WHERE name = #stationName#
INSERT INTO annunci(idannuncio, codloc, dataorainizioann,
dataorafineann, dataorainiziorec, idaudio, msgannuncio, codmas,
stannuncio, lingua)
VALUES (#idannuncio#, #codloc#, #dataorainizioann#,
#dataorafineann#, #dataorainiziorec#, @id_audio,
#msgannuncio#, #codmas#, #stannuncio#, #lingua#)
commit transaction
GO
</insert>
where stannuncio is a char type (CHAR for db and char for java)
I've tried to configure a handler in this way:
public class CharTypeHandlerCallback implements TypeHandlerCallback {
public Object getResult(ResultGetter getter) throws SQLException {
System.out.println("Inside getResult");
if(getter.wasNull())
return null;
return getter.getString();
}
public void setParameter(ParameterSetter setter, Object parameter) throws
SQLException {
System.out.println("Inside setParameter");
if (parameter == null) {
setter.setNull(Types.CHAR);
} else {
setter.setString((String)parameter.toString());
}
}
public Object valueOf(String s) {
System.out.println("Inside valueOf");
return s;
}
}
and added it in SqlMApCOnfig as
<typeHandler javaType="java.lang.String" jdbcType="CHAR"
callback="tsf.sara.sqlmap.CharTypeHandlerCallback"/>
When I call the insert sqlMap.insert("insertAnnuncioFileMD", annuncioFileMD)
I get
--- The error occurred in SARA-SqlMap.xml.
--- The error occurred while applying a parameter map.
--- Check the insertAnnuncioFileMD-InlineParameterMap.
--- Check the parameter mapping for the 'stannuncio' property.
--- Cause: java.lang.NullPointerException
stannuncio is set to a 'A'.
I don't see where I'm wrong, have you any suggestion?
Thanx,
Michela
--
View this message in context: http://www.nabble.com/MS-Sql-Server-2000-and-access-to-a-CHAR-column-tp23653653p23653653.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
Re: MS Sql Server 2000 and access to a CHAR column
Posted by "m.montano" <ko...@gmail.com>.
Do you mean in class AnnuncioFileMD? I can't change database structure..
is the cast automatic? because if I set private String stannuncio I get a
data truncation exception..
Larry Meadors wrote:
>
> Why not just use a String?
>
> Larry
>
>
> On Thu, May 21, 2009 at 8:00 AM, m.montano <ko...@gmail.com> wrote:
>>
>> Hi all,
>> I'm developing a j2ee web application using ibatis to interact with a ms
>> sql
>> server 2000.
>> I've to perform this operation:
>> <insert id="insertAnnuncioFileMD"
>> parameterClass="tsf.sara.sqlmap.AnnuncioFileMD">
>> begin transaction
>> declare @id_audio varchar(20)
>>
>> set @id_audio = cast(IDENT_CURRENT('filemd') +
>> ident_incr('filemd')
>> as varchar)
>> INSERT INTO filemd(fname, fsize, furl, fcdate, station_id, status,
>> diagMask, md5sig, msgId, idaudio)
>> SELECT #fname#, #fsize#, #furl#, #fcdate#, id,#status#,
>> #diagMask#, #md5sig#, #msgId#, #idaudio#
>> FROM station WHERE name = #stationName#
>>
>> INSERT INTO annunci(idannuncio, codloc, dataorainizioann,
>> dataorafineann, dataorainiziorec, idaudio, msgannuncio,
>> codmas,
>> stannuncio, lingua)
>> VALUES (#idannuncio#, #codloc#, #dataorainizioann#,
>> #dataorafineann#, #dataorainiziorec#, @id_audio,
>> #msgannuncio#, #codmas#, #stannuncio#, #lingua#)
>>
>> commit transaction
>> GO
>> </insert>
>> where stannuncio is a char type (CHAR for db and char for java)
>>
>> I've tried to configure a handler in this way:
>>
>> public class CharTypeHandlerCallback implements TypeHandlerCallback {
>>
>> public Object getResult(ResultGetter getter) throws SQLException {
>> System.out.println("Inside getResult");
>> if(getter.wasNull())
>> return null;
>>
>> return getter.getString();
>> }
>>
>> public void setParameter(ParameterSetter setter, Object parameter) throws
>> SQLException {
>> System.out.println("Inside setParameter");
>> if (parameter == null) {
>> setter.setNull(Types.CHAR);
>> } else {
>> setter.setString((String)parameter.toString());
>> }
>> }
>>
>> public Object valueOf(String s) {
>> System.out.println("Inside valueOf");
>> return s;
>> }
>>
>> }
>>
>> and added it in SqlMApCOnfig as
>> <typeHandler javaType="java.lang.String" jdbcType="CHAR"
>> callback="tsf.sara.sqlmap.CharTypeHandlerCallback"/>
>>
>> When I call the insert sqlMap.insert("insertAnnuncioFileMD",
>> annuncioFileMD)
>> I get
>> --- The error occurred in SARA-SqlMap.xml.
>> --- The error occurred while applying a parameter map.
>> --- Check the insertAnnuncioFileMD-InlineParameterMap.
>> --- Check the parameter mapping for the 'stannuncio' property.
>> --- Cause: java.lang.NullPointerException
>>
>> stannuncio is set to a 'A'.
>> I don't see where I'm wrong, have you any suggestion?
>> Thanx,
>> Michela
>> --
>> View this message in context:
>> http://www.nabble.com/MS-Sql-Server-2000-and-access-to-a-CHAR-column-tp23653653p23653653.html
>> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
>>
>>
>
>
--
View this message in context: http://www.nabble.com/MS-Sql-Server-2000-and-access-to-a-CHAR-column-tp23653653p23653885.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
Re: MS Sql Server 2000 and access to a CHAR column
Posted by Larry Meadors <la...@gmail.com>.
Why not just use a String?
Larry
On Thu, May 21, 2009 at 8:00 AM, m.montano <ko...@gmail.com> wrote:
>
> Hi all,
> I'm developing a j2ee web application using ibatis to interact with a ms sql
> server 2000.
> I've to perform this operation:
> <insert id="insertAnnuncioFileMD"
> parameterClass="tsf.sara.sqlmap.AnnuncioFileMD">
> begin transaction
> declare @id_audio varchar(20)
>
> set @id_audio = cast(IDENT_CURRENT('filemd') + ident_incr('filemd')
> as varchar)
> INSERT INTO filemd(fname, fsize, furl, fcdate, station_id, status,
> diagMask, md5sig, msgId, idaudio)
> SELECT #fname#, #fsize#, #furl#, #fcdate#, id,#status#,
> #diagMask#, #md5sig#, #msgId#, #idaudio#
> FROM station WHERE name = #stationName#
>
> INSERT INTO annunci(idannuncio, codloc, dataorainizioann,
> dataorafineann, dataorainiziorec, idaudio, msgannuncio, codmas,
> stannuncio, lingua)
> VALUES (#idannuncio#, #codloc#, #dataorainizioann#,
> #dataorafineann#, #dataorainiziorec#, @id_audio,
> #msgannuncio#, #codmas#, #stannuncio#, #lingua#)
>
> commit transaction
> GO
> </insert>
> where stannuncio is a char type (CHAR for db and char for java)
>
> I've tried to configure a handler in this way:
>
> public class CharTypeHandlerCallback implements TypeHandlerCallback {
>
> public Object getResult(ResultGetter getter) throws SQLException {
> System.out.println("Inside getResult");
> if(getter.wasNull())
> return null;
>
> return getter.getString();
> }
>
> public void setParameter(ParameterSetter setter, Object parameter) throws
> SQLException {
> System.out.println("Inside setParameter");
> if (parameter == null) {
> setter.setNull(Types.CHAR);
> } else {
> setter.setString((String)parameter.toString());
> }
> }
>
> public Object valueOf(String s) {
> System.out.println("Inside valueOf");
> return s;
> }
>
> }
>
> and added it in SqlMApCOnfig as
> <typeHandler javaType="java.lang.String" jdbcType="CHAR"
> callback="tsf.sara.sqlmap.CharTypeHandlerCallback"/>
>
> When I call the insert sqlMap.insert("insertAnnuncioFileMD", annuncioFileMD)
> I get
> --- The error occurred in SARA-SqlMap.xml.
> --- The error occurred while applying a parameter map.
> --- Check the insertAnnuncioFileMD-InlineParameterMap.
> --- Check the parameter mapping for the 'stannuncio' property.
> --- Cause: java.lang.NullPointerException
>
> stannuncio is set to a 'A'.
> I don't see where I'm wrong, have you any suggestion?
> Thanx,
> Michela
> --
> View this message in context: http://www.nabble.com/MS-Sql-Server-2000-and-access-to-a-CHAR-column-tp23653653p23653653.html
> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
>
>