这是事情:-)
我们有两个类Appointment
和Hairdresser
,两个类都有相同的,一个祖先(静态最终键:topParent
)代表HairSalon
键。 Appointment
包含Hairdresser
,如下所示:
@Parent
public Key parent;
public Key hairdresserKey;`
但是当我们试图过滤掉约会时,它没有得出结果。 hairdresserKey == null
中的父母,这可能是一个线索,但我们现在已经陷入困境。
有人可以告诉我们这个查询有什么问题吗?
非常感谢!
appointment.hairdresserKey = new Key<Hairdresser>(topParent, Hairdresser.class, appointment.hairdresser.id);
appointment.parent = topParent;
Key<Hairdresser> queryKey = new Key<Hairdresser>(topParent, Hairdresser.class, appointment.hairdresser.id);
Objectify ofyTransaction = ObjectifyService.beginTransaction();
try {
List<Key<Appointment>> previousTimeSlotOneHour = ofyTransaction.query(Appointment.class)
.ancestor(topParent)
.filter("hairdresserKey", appointment.hairdresserKey)
.filter("timeSlot", appointment.timeSlot.getPreviousTimeSlot())
.filter("LENGTH", 1.0d).listKeys();
要清除更多,这就是约会的设置方式:
@Unindexed
public class Appointment实现Serializable {
@Id
public Long id;
@Indexed
public TimeSlot timeSlot;
@Transient
public WorkDay workDay;
@Transient
public Customer customer;
public Key customerKey;
public int END_TIME_HOUR;
public int END_TIME_MINUTES;
@Indexed
public TREATMENT treatment = TREATMENT.TREATMENT_CUT;
public int revisionNumber = -1;
/* QUERY Fields */
@Indexed
private String stringDate;
private double LENGTH;
@Parent
public Key parent;
private Date date;
@Transient
public Hairdresser hairdresser;
public Key hairdresserKey;
答案 0 :(得分:0)
发现这个:
这几乎肯定是一个索引问题。为了使该查询起作用,您必须定义两个索引:
referenceKeyToC上的单属性索引 {ancestor,referenceKeyToC}上的多属性索引 在Objectify 3.x中,属性默认具有单属性索引,但如果已将@Unindexed添加到B类,则需要将@Indexed放在referenceKeyToC上。 多属性索引在datastore-indexes.xml中定义。如果您以开发模式运行此查询,环境应该为您提供所需的xml片段。
这就是诀窍!谢谢你指出了正确的方向!