The first thought that comes to mind is that your database column is not
storing
time information, i.e. year/month/day only.  You might want to take a look
at that.

-----Original Message-----
From: Timothy Kettering [mailto:[EMAIL PROTECTED]
Sent: Friday, January 17, 2003 4:35 PM
To: [EMAIL PROTECTED]
Subject: [Hibernate] problems with date comparision


I'm using Hibernate with a program that I'm developing, and one my 
small test units turned up a weird issue that I'm not sure if is a bug 
or i'm screwing up somewhere...

This is the query I have:

                        be = sess.find("select entry from entry in class " +
                                "com.blackcore.blogserver.general.BlogEntry
where entry.timestamp > 
? " +
                                "and entry.blog.id = ?" +
                                " order by entry.timestamp asc limit ?",
params, types);

 From what I figure, this should return all entry objects with a 
timestamp (actually an date object) greater than the supplied date 
parameter.

But what happened at first was that it returned (first in the List) the 
entry with the matching timestamp supplied, rather than the next one 
with a greater timestamp.  In the process of trying to figure out what 
went on, I manually increased the Date object by 100,000 milliseconds 
to see if I could get it to skip the first object returned.  No such 
luck.  Still returned the first object with the matching timestamp.   
Heres an output of the debug strings I put in, it outputs the timestamp 
of the parameter before and after incrementing it.  And you can see 
from the output below that it STILL returns #227, in spite of the fact 
that it's less than the post-modification timestamp!

before the modification: 1042042968000
  after the modification: 1042052968000
Id is: 227 // first object returned - this shouldnt be returned.
Time is: 1042042968000
Id is: 228 // second object returned .. this should be the first!
Time is: 1042519996000

If i set it to try to try to retrieve the next X entry objects after 
the most recent entry object in the database, (without advancing the 
timestamp parameter), it returns only last entry object.  But if I do 
the timestamp advance before passing in the parameter, it returns 
nothing, which is the right behavior.

The strange thing is that I have a method with is exactly the same as 
this, but returns a List of entry objects that are LESS than the 
timestamp.  and it works just as expected, no problems with that.  Its 
just weird.  Anyone have any insights?  I'm using hibernate 1.2.2 with 
a mysql database.

-tim



-------------------------------------------------------
This SF.NET email is sponsored by: Thawte.com - A 128-bit supercerts will
allow you to extend the highest allowed 128 bit encryption to all your 
clients even if they use browsers that are limited to 40 bit encryption. 
Get a guide here:http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0030en
_______________________________________________
hibernate-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hibernate-devel


-------------------------------------------------------
This SF.NET email is sponsored by: Thawte.com - A 128-bit supercerts will
allow you to extend the highest allowed 128 bit encryption to all your 
clients even if they use browsers that are limited to 40 bit encryption. 
Get a guide here:http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0030en
_______________________________________________
hibernate-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hibernate-devel

Reply via email to