Java Google应用程序引擎数据查询返回0个结果

Java Google应用程序引擎数据查询返回0个结果,java,google-app-engine,objectify,Java,Google App Engine,Objectify,我正在尝试使用带有objectify的google app engine登录,但由于google用户对象没有足够的信息,我创建了一个本地实体,如下所示: @Cache @Entity public abstract class UserData extends RoleUser implements UserDetails { protected String firstName; protected String middleName; protected Strin

我正在尝试使用带有objectify的google app engine登录,但由于google用户对象没有足够的信息,我创建了一个本地实体,如下所示:

@Cache
@Entity
public abstract class UserData extends RoleUser implements UserDetails {

    protected String firstName;
    protected String middleName;
    protected String lastName;


    protected boolean enabled;
    protected String phoneNumber;

    @Index
    protected String email;

    @Index
    protected String userName;
public boolean isNewUser(String email){
    int count = ofy().load().type(GoogleUser.class).filter("userName =", email).count();
    logger.debug("Total accounts for email: |" + email + "| \t Count: " + count);
    return count == 0;
} 
我为谷歌用户提供了一个子类,如下所示:

@Subclass
public class GoogleUser extends UserData {

    private String googleUserId;
    private String authDomain;
最后,我运行的查询查看是否为特定电子邮件创建了自定义实体,如下所示:

@Cache
@Entity
public abstract class UserData extends RoleUser implements UserDetails {

    protected String firstName;
    protected String middleName;
    protected String lastName;


    protected boolean enabled;
    protected String phoneNumber;

    @Index
    protected String email;

    @Index
    protected String userName;
public boolean isNewUser(String email){
    int count = ofy().load().type(GoogleUser.class).filter("userName =", email).count();
    logger.debug("Total accounts for email: |" + email + "| \t Count: " + count);
    return count == 0;
} 
我遇到的问题是,即使我通过本地appengine服务器上的admin查看数据存储时看到实体,查询仍返回0个结果。我在这里已经穷途末路了,所以我希望能得到任何帮助

我想知道

.filter("userName =", email)
应该是

.filter("email =", email)
我想知道

.filter("userName =", email)
应该是

.filter("email =", email)

默认情况下,
objectify
不索引子类。必须为每个子类显式启用此功能,如下所示:

@Subclass(index=true)
public class GoogleUser extends UserData {

    private String googleUserId;
    private String authDomain;
请注意,如果更改了类的多态层次结构,则需要重新保存实体以进行索引

小提示:过滤器中没有操作员意味着== 您的查询可以这样写

int count = ofy().load().type(GoogleUser.class).filter("userName", email).list();

默认情况下,
objectify
不索引子类。必须为每个子类显式启用此功能,如下所示:

@Subclass(index=true)
public class GoogleUser extends UserData {

    private String googleUserId;
    private String authDomain;
请注意,如果更改了类的多态层次结构,则需要重新保存实体以进行索引

小提示:过滤器中没有操作员意味着== 您的查询可以这样写

int count = ofy().load().type(GoogleUser.class).filter("userName", email).list();

您排除了吗?@tx802是的,我不认为这是复制问题,因为我重新启动了服务器,并且我看到该字段在admin中被索引。我假设一旦它出现在admin中,它就可以进行查询了,但我可能错了。您排除了吗?@tx802是的,我不认为这是复制问题,因为我已重新启动服务器,并且我看到该字段在admin中被索引。我假设一旦它出现在admin中,它就可以进行查询了,但我可能错了。实际上,我已经尝试了这两种方法,对于Google帐户,用户名就是电子邮件,我已经用电子邮件填充了这两个字段。2016-07-31 15:56:39调试用户DAO:54-电子邮件帐户总数:|test@example.com|计数:0实际上,我已经尝试了这两种方法,对于Google帐户,用户名是电子邮件,我已经用电子邮件填充了这两个字段。2016-07-31 15:56:39调试用户DAO:54-电子邮件帐户总数:|test@example.com|伯爵:我现在可以吻你了。啊。我甚至试着为每个人创建一个手动索引。我只是删除了我所有的实体,然后重试,效果非常好。非常感谢你,谢谢你的提示!我现在可以吻你了。啊。我甚至试着为每个人创建一个手动索引。我只是删除了我所有的实体,然后重试,效果非常好。非常感谢你,谢谢你的提示!