Hello,

I'm struggling to understand how your use of DB2 has any relation to errors
in your xml file because there isn't any connection beyond the SQL itself.
Not being able to modify the sql map xml file puts a severe restriction on
your ability to use iBATIS correctly.

So my guess is that you cut and paste what I wrote into your xml file and
Java code, you got a DB2 SQL error, which caused you to back the whole thing
out.

The first thing you should have done was take the raw SQL in the select
element and tried to run it in your DB2 client, replacing the # parameters
with real values.  Once you had the query working as you expected with no
errors, then you should have copied it back into the xml, replacing the
actual values with # parameters.  Then you should have unit tested the
DAOImpl method to see if the JDBC type of BIGINT works for you.  If it
didn't, then you should play around with the JDBC number types to see which
on does work.  Or maybe you could just replace the BIGINT with VARCHAR and
pass in String values in the parameter Map.

I get the sense you think Abator is the main interface of iBATIS, which is
not the case.  Abator provides a nice boilerplate interface for basic CRUD
work, but the real power of iBATIS is being able to throw arbitrary SQL into
the xml file and map it to Java objects.  For example, Abator doesn't handle
joining of tables, which is a very basic relational database feature.  You
need to provide your own SQL for that, which requires modifying the sql map
xml file and being able to troubleshoot from there.

Cheers,
Chris


On 8/9/07 2:47 AM, "davy" <[EMAIL PROTECTED]> wrote:

> I have done what you have mailto me, but we use db2 and there is the problem I
> get every time a error message from DB2 when I change something in the xml
> file
> Is there really now way to make it like this or something else, that I don¹t
> have to change the xml file.
> 
> 
> Example.setOrderByClause("substr(number,13,8)");
> Example.createCriteria().andnumberBetween(fDate, uDate);
> 
> 
> Every idea is welcome.
> Davy
> 
> 
> 
> 
> -----Original Message-----
> From: Christopher Lamey [mailto:[EMAIL PROTECTED]
> Sent: woensdag 8 augustus 2007 22:07
> To: [email protected]
> Subject: Re: Small problem with date.
> 
> Ah, the joy of legacy systems.
> 
> If you only have one SQL call that needs this, then I would write a new
> SELECT element in your sqlmap and call it through the DAO.
> 
> Something like this in the sqlmap xml, where you reuse the abator result
> map:
> 
> <select id="search_by_date" parameterClass="map"
>         resultClass=" abatorgenerated_BeheerResult">
>     select * 
>     from beheer
>     where (substr(number,13,8)
>     between #startNum:BIGINT# and #stopNum:BIGINT#
> </select>
> 
> Then add the method signature to the DAO interface:
> 
> public List<Beheer> selectByDateNumber(long start, long stop) throws
> SQLException;
> 
> 
> And then implement it in the DAOImpl class:
> 
> public List<Beheer> selectByDateNumber(long start, long stop) throws
> SQLException {
>     Map<String, Long> params = new HashMap<String, String>();
> 
>     params.put("startNum", new Long(start));
> 
>     params.put("stopNum", new Long(stop));
>     return sqlMapClient.queryForList("BEHEER.search_by_date", params);
> }
> 
> I'm not sure what type you're using for the start and stop parameters, so
> you should change them as needed.
> 
> Cheers,
> Chris
> 
> On 8/8/07 1:41 PM, "Davy" <[EMAIL PROTECTED]> wrote:
> 
>> Hooow, then I have a big problem, is there now other way to get 8 numbers
>> (date) out of that specific number?
>> Is this really not possible in Ibatis.
>> Adding an extra column in the table is a problem.
>> What would be the best way outside adding and extra column to the database
>> to solve this problem?
>> Any suggestion would be nice.
>> 
>> Davy
>> 
>> 
>> 
>> -----Original Message-----
>> From: Richard Yee [mailto:[EMAIL PROTECTED]
>> Sent: woensdag 8 augustus 2007 16:14
>> To: [email protected]
>> Subject: Re: Small problem with date.
>> 
>> Davy,
>> I suggest adding a date column to your table. It will make things a lot
>> easier in the long run. You can run a program on your existing data to
>> populate the new field. the search performance will be better too.
>> 
>> -Richard
>> 
>> davy wrote:
>>> I have the next problem, I have a query which must filters a certain
>> period out a number. for example:
>>> this is the number 54789635479E200708081545 this means
>>> 2007 year 08 month 08 day 15 hour 45 minutes.
>>> Now, i have a query (substr(number,13,8) between ? and ?
>>> 
>>> This means that the user can give a certain from date and until date
>> (year,month,day) sow the query will search on this date in these number
>>> 
>>> I have developed this :
>>> 
>>> Example.setOrderByClause("substr(number,13,8)");
>>> Example.createCriteria().andnumberBetween(fDate, uDate);
>>> 
>>> fDate and uDate = are both strings, these are the 2 dates that the user
>> has given to search for.
>>> for example 
>>> fDate = 20050101 from
>>> uDate = 20063112 until
>>> 
>>> When i use the query, al my numbers are displayd, butt the query have not
>> worked properly.
>>> Is there someone that has a proposal how it must be done.
>>> 
>>> 
>>> 
>>> 
>>> 
>>>   
>> 
>> 
> 
> 
> 

Reply via email to