The other option I've been thinking about is to get limitFetchTime() /
limitTimeAllowedTo() to return a Future object or some equivalent notion say a
BooleanHolder.
BooleanHolder hasPartialResults = query.limitTimeAllowedTo(500, MILLISECONDS,
hasPartialResults);
query.list();
if ( hasPartialResults.get() ) {
//do stuffs
}
But:
- that's a bit weird to get a future in this sync API
- it breaks the method chaining used in the rest of the API
Another possibility is to optionally let people pass the boolean holder that is populated
after the call
BooleanHolder hasPartialResults = new BooleanHolder();
List results = query.limitTimeAllowedTo(500, MILLISECONDS, hasPartialResults).list();
if ( hasPartialResults.get() ) {
//do stuffs
}
WDYT?
On 6 nov. 2010, at 15:25, Emmanuel Bernard wrote:
You'll need to extend:
- List
- Iterator
- ScrollableResults
Not sure that's a good thing.
You can reuse the query as long as you check hasPartialResults() before calling
list/iterate/scroll query again.
PS: we should add tests about query reusability, I'm not sure it works as expected
today.
On 6 nov. 2010, at 12:31, Sanne Grinovero wrote:
> Hello,
> about naming I have no better ideas:
> .limitFetchTime() //slightly different, not very happy about it either
>
> about API, does it really make sense to have hasPartialResults() as a
> method of the Query?
> It should be a List property I think - I have no strong opinions about
> this as I don't like having to extend the List implementation.
>
> But really Query is something I might want to reuse - unlikely but I'd
> expect that to work fine.
> So what about:
>
> SomeNewList results = query.list(500, TimeUnit.MILLISECONDS)
> or a batter named method.
>
> So:
>
> if ( results.hasPartialResults() ) {
> displayWarningToUser();
> }
>
> This is one of those cases in which I miss the option of having a
> couple of values from a function.
>
> Sanne
>
> 2010/11/5 Emmanuel Bernard <emmanuel(a)hibernate.org>:
>> If you can find better name for the API, please advise. I am not happy with the
current version
>>
>> Query luceneQuery = ...;
>> FullTextQuery query = fullTextSession.createFullTextQuery(luceneQuery,
User.class);
>>
>> //define the timeout in seconds
>> query.limitFetchingTime(500, TimeUnit.MILLISECONDS);
>> List results = query.list();
>>
>> if ( query.hasPartialResults() ) {
>> displayWarningToUser();
>> }
>>
>> Emmanuel
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>
_______________________________________________
hibernate-dev mailing list
hibernate-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev