Objectify4 を使用するようにアプリケーションをアップグレードしましたが、順序付けが機能しません。これが私がやったことです: 私は照会したいクラス Offer を持っています。このクラスは、Mail および Model から拡張されています。order の属性は、Mail-Class で索引付けされた日時でなければなりません。
import com.googlecode.objectify.annotation.EntitySubclass;
import com.googlecode.objectify.annotation.Serialize;
@EntitySubclass(index=true)
public class Offer extends Mail {
private static final long serialVersionUID = -6210617753276086669L;
@Serialize private Article debit;
@Serialize private Article credit;
private boolean accepted;
...
}
import com.googlecode.objectify.annotation.EntitySubclass;
import com.googlecode.objectify.annotation.Index;
@EntitySubclass(index=true)
public class Mail extends Model {
private static final long serialVersionUID = 8417328804276215057L;
@Index private Long datetime;
@Index private String sender;
@Index private String receiver;
...}
import java.io.Serializable;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import com.googlecode.objectify.annotation.Ignore;
import com.googlecode.objectify.annotation.Index;
@Entity
public class Model implements Serializable {
private static final long serialVersionUID = -5821221296324663253L;
@Id Long id;
@Index String name;
@Ignore transient private Model parent;
@Ignore transient private boolean changed;
...}
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.ObjectifyService;
public class DatabaseService {
static {
ObjectifyService.register(Model.class);
ObjectifyService.register(Mail.class);
ObjectifyService.register(Offer.class);
}
public static Objectify get() {
return ObjectifyService.ofy();
}
}
それが私がやりたいことです:
Query<Offer> result = DatabaseService.get().load().type(Offer.class).order("-datetime");
残念ながら、結果は常にソートされません。
ヒントはありますか?