Try this:

query.setFilter("pointsEarned < 0f");

This test case below worked for me:

import
com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig;
import
com.google.appengine.tools.development.testing.LocalServiceTestHelper;

import junit.framework.Assert;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.List;

import javax.jdo.PersistenceManager;
import javax.jdo.Query;




public class TestEntityTest {
  private final LocalServiceTestHelper helper =
    new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());

  @Before
  public void setUp() {
      helper.setUp();
  }

  @After
  public void tearDown() {
      helper.tearDown();
  }

  @SuppressWarnings("unchecked")
  @Test
  public void testFloatValue() {

    TestEntity t = new TestEntity();

    t.setFloatValue(1.0f);

    PersistenceManager pm = PMF.get().getPersistenceManager();
    pm.makePersistent(t);

    Query query = pm.newQuery(TestEntity.class);
    query.setFilter("floatValue > 0f");
    List<TestEntity> results = (List<TestEntity>) query.execute();

    Assert.assertEquals("Should have a single value", 1, results.size());

    TestEntity negativeFloat = new TestEntity();
    negativeFloat.setFloatValue(-1.0f);
    pm.makePersistent(negativeFloat);

    query = pm.newQuery(TestEntity.class);
    results = (List<TestEntity>) query.execute();

    Assert.assertEquals("Should have two values, one positive one negative",
2, results.size());


    query = pm.newQuery(TestEntity.class);
    query.setFilter("floatValue > 0f");
    results = (List<TestEntity>) query.execute();

    Assert.assertEquals("Should have one positive value", 1,
results.size());

    query = pm.newQuery(TestEntity.class);
    query.setFilter("floatValue < 0f");
    results = (List<TestEntity>) query.execute();

    Assert.assertEquals("Should have one negative value", 1,
results.size());

    pm.close();

  }


}


On Thu, Apr 8, 2010 at 4:22 AM, Bert <[email protected]> wrote:

> Hi,
>
> I'm trying to execute following query, which should return 3 values
> but returns 0.
> I think it's because pointsEarned is a float, but I don't know how to
> solve it.
>
> Query query = pm.newQuery(Answer.class);
> query.setFilter("pointsEarned < 0");
> List<Answer> answers = (List<Answer>) query.execute();
>
> There are 3 Answer entities in the datastore with pointsEarned = -1.0
>
> Is there anyway to query like this < on a float field?
>
> Regards
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To post to this group, send email to
> [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-appengine-java%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>


-- 
Ikai Lan
Developer Programs Engineer, Google App Engine
http://googleappengine.blogspot.com | http://twitter.com/app_engine

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to