That’s an awesome solution you created there Andrew, works like a charm. Thanks 
yet again!

Happy little counting method -> 
https://gist.github.com/hugith/8a21aa4247385732a4ce

Cheers,
- hugi




> On 12. ágú. 2015, at 09:20, Andrew Lindesay <a...@lindesay.co.nz> wrote:
> 
> Hi Hugi;
> 
> You can use EJBQL queries with timestamps, but there is presently no 
> supported _literal_ representation for a timestamp inside the query string so 
> you have to use parameters instead.  Here is an example;
> 
>  EJBQLQuery q = new EJBQLQuery(String.format(
>    "DELETE FROM %s r WHERE r.createTimestamp < :expiryTimestamp",
>    Response.class.getSimpleName()));
> 
>  q.setParameter("expiryTimestamp",
>    new Timestamp(System.currentTimeMillis() -
>    TimeUnit.SECONDS.toMillis(expirySeconds)));
> 
>  getServerRuntime().getContext().performQuery(q);
> 
> To help with getting Expression objects to over to EJBQL with timestamp 
> literals;
> 
>  Expression#toEJBQL(List<Object> parameterAccumulator, String rootId)
> 
> So you call that and as it creates the EJBQL fragment, it will insert any 
> necessary parameters into the parameterAccumulator for you all set to go into 
> the EJBQLQuery.
> 
> Hopefully that helps?
> 
> cheers.
> 
> [1] 
> https://github.com/aplgithub/haikudepotserver/blob/master/haikudepotserver-webapp/src/main/java/org/haikuos/haikudepotserver/captcha/DatabaseCaptchaRepository.java
> 
> 
>  For example;
> 
>  SELECT f FROM Foo f WHERE f.createTimestamp > ?
> 
> Then you just need to use the
> 
> 
> On 12/08/15 20:35, Hugi Thordarson wrote:
>> Hi Andrew,
>> thanks for that. I see what the problem is.
>> But if I can’t use EJBQL when generating queries that use dates, can I go 
>> down any different paths or do I have to revert to writing plain old SQL?
> 
> -- 
> Andrew Lindesay

Reply via email to