我是Google Appengine的新手。在我的应用程序中,数据存储区实体存储一个java.util.Date对象。我想查询数据存储以在特定时间之前返回所有实体。我的代码是:

Date date = new Date();
Query<Event> query = ofy().load().type(Event.class).order("date");
query = query.filter("date <", date);


它在执行时给出错误:Invalid date/time format: Sat Apr 04 00:40:22 IST 2015

如果此格式无效,我需要使用哪种格式进行查询?

最佳答案

这是一个简单的代码

import java.util.Date;

import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import com.googlecode.objectify.annotation.Index;

@Entity
public class EntityDate {
    public EntityDate() {
        // Objectify needed
    }

    @Id
    private Long id;

    @Index
    public Date date;
}


这是进行查询的代码

Date date = new Date();

Objectify ofy = ObjectifyService.ofy();
ObjectifyService.register(EntityDate.class);
EntityDate entityDate = new EntityDate();
entityDate.date = date;
ofy.save().entities(entityDate);

Query<EntityDate> ofyQuery = ofy.load().type(EntityDate.class).order("date");
ofyQuery = ofyQuery.filter("date <", date);
List<EntityDate> list = ofyQuery.list();

Logger.getLogger("EntityDate").info(list.toString());


实体已正确保存


并且查询提供了4个结果

[EntityDate@6780874d, EntityDate@27330551, EntityDate@6a21cf2, EntityDate@7d1a5744]


该类的默认toString()有点丑陋,但是它可以正确执行查询。

您可以提供Event类的源代码以及执行查询的代码的延续吗?

10-04 20:39