我尝试使用带有客观化的谷歌应用引擎登录,但由于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;
我有一个GoogleUser的子类,如下所示:
@Subclass
public class GoogleUser extends UserData {
private String googleUserId;
private String authDomain;
最后,我运行的查询是否为特定电子邮件创建了我的自定义实体,如下所示:
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结果。我在绳子的尽头,所以我很感激任何帮助。
答案 0 :(得分:2)
import os
try:
res = os.popen("ping -c 4 www.google.com")
except IOError:
print "ISPerror: popen"
try:
#wait = [0,0]
wait = os.wait()
except IOError:
print "ISPerror:os.wait"
if wait[1] != 0:
print(" os.wait:exit status != 0\n")
else:
print ("os.wait:"+str(wait))
print("before read")
result = res.read()
print ("after read:")
print ("exiting")
不会为子类编制索引。您必须为每个子类显式启用它,如下所示:
objectify
请注意,如果您更改了类的多态层次结构,则需要重新保存实体以便将索引工作。
小提示:过滤器中没有操作符意味着== 您的查询可以像这样写
@Subclass(index=true)
public class GoogleUser extends UserData {
private String googleUserId;
private String authDomain;
答案 1 :(得分:0)
我想知道是否
.filter("userName =", email)
应该是
.filter("email =", email)