gpt4 book ai didi

java - Objectify 5 - 过滤嵌入实体字段不起作用

转载 作者:行者123 更新时间:2023-12-02 05:28:37 26 4
gpt4 key购买 nike

我尝试从我自己的名为“Payment”的类中加载对象列表。现在我不想加载所有付款,而只想加载那些以特定“组”为父级的付款(组也是一个自己的类)。

这是付款类:

@Entity
public class Payment {
@Id private Long id;
@Index @Load private Ref<Group> parent;
// other fields, constructors, getters and setters
}

这是我的小组类(class):

@Entity
public class Group {
@Index @Id private Long id;
// other fields, constructors, getters and setters
}

以下是我尝试加载此付款列表的方法:

public static List<Payment> getPaymentsByGroup(Group group) {
List<Payment> payments = ofy().load().type(Payment.class)
.filter("parent.id", group.getId()).list();
return payments;
}

但结果始终是一个空列表。但如果我尝试做这样的事情:

public static List<Payment> getPaymentsByGroup(Group group) {
List<Payment> temp = new ArrayList<>();
List<Payment> payments = ofy().load().type(Payment.class).list();
for (Payment payment : payments) {
if(payment.getParent().getId().equals(group.getId())){
temp.add(payment);
}
}
return temp;
}

我会收到付款。我使用 Objectify 5。由于性能原因,Payment 类应该是一个自己的实体,而不是作为普通嵌入对象存储在 Group 类中。否则,整个组对象必须通过添加一项付款来与所有付款一起存储。

我做错了什么?如何过滤嵌入实体中的字段?

最佳答案

我认为您可能会混淆这里的术语,因为我没有看到 @Parent (实体组)或嵌入实体。我确实看到了Ref<?> ,本质上是一个键。

如果您将查询更改为

List<Payment> payments = ofy().load().type(Payment.class).filter("parent = ", Ref.create(group)).list();

它应该可以工作。

关于java - Objectify 5 - 过滤嵌入实体字段不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25764104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com