如何在app引擎中使用名称空间的多租户工作?我的应用程序有多个用户,每个用户有点像多租户中的租户.他们的URL以domain/customer/companyToken#pageName?param1¶m2开头.因此,如果我想为每个客户应用带有命名空间的多租户,那么从Google文档中,您需要为每个客户分配NamespaceManager的唯一ID,如下所示:
NamespaceManager.set(request.getServerName());
Run Code Online (Sandbox Code Playgroud)
现在我有几个问题.
App Engine的命名空间多租户如何真正起作用?
它如何改变我们一般访问数据的方式?
它如何改变我们使用Objectify访问数据的方式?
首先,我对应用程序的上述应用的理解是,在检索数据时,所有与上述客户(租户)相关的数据都聚集在同一名称空间中,那么我们如何使用Objectify访问数据?目前公司obj作为与客户相关的所有obj的父母.(所以我的申请?)
非常感谢你提前.
是否有一种简单的方法可以使用Objectify + google appengine(Java)进行不区分大小写的过滤查询?基本上这是我想要做的,除了我需要电子邮件上的过滤器不区分大小写.
Objectify objectifyService = ObjectifyService.begin();
objectifyService.query(AppUser.class).filter("email", email).get();
Run Code Online (Sandbox Code Playgroud) 以下是所有objectify/app引擎专家的问题:
我通过将父对象的键存储在子对象中来创建具有父/子关系的ojectes.它存储在Key类型的对象中.例如,假设我有一个汽车对象和轮胎对象.轮胎对象将父键存储在Key类型的变量中.
@Entity
Public class Tire{
@Id Long id;
Key<Car> ParentKey;
int size;
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我将需要获得所有轮胎给定一辆车.我可以通过查询来执行此操作:轮胎轮胎= oft.query(Tire.class).filter("ParentKey",carKey).get();
这是一种非常有效的方法来实现这一目标吗?这会导致实体组出现任何问题吗?这对大量汽车和轮胎有效吗?
我正在尝试使用Objectify v4在App Engine中获取实体,但它不起作用.
我的@Entity:
@Entity
public class Translation {
@Id
private Long id;
private String text;
public String getText() {
return text;
}
public Long getId() {
return id;
}
public void setText(String text) {
this.text = text;
}
}
Run Code Online (Sandbox Code Playgroud)
不说的请求:
Translation translation =ObjectifyService.ofy().load().type(Translation.class).id(301L).get(); // translation is null
Run Code Online (Sandbox Code Playgroud)
但如果我这样做:
Translation translation = ObjectifyService.ofy().load().type(Translation.class).first().get(); // translation is not null
Run Code Online (Sandbox Code Playgroud)
然后:
System.out.println(translation.getId()); // translation id equal 301
Run Code Online (Sandbox Code Playgroud)
所以id的fetch似乎不起作用.问题出在哪儿?
每次我启动我的应用程序时,即使没有执行 listEmptyBoxes(),我也会收到“RequestFactory Validation Tool must be run...”错误。我已经有了requestfactory-apt-2.5.0-rc1.jar关于注释处理的文件。
有任何想法吗?在我的代码下面。谢谢。
我的项目.java
private void listEmptyBoxes() {
BoxRequest boxRequest = requestFactory.boxRequest();
boxRequest.listAllEmpty().fire(new Receiver<List<BoxProxy>>() {
public void onSuccess(List<BoxProxy> response) { // List all phantom boxes
Window.alert("Successful");
}
});
}
Run Code Online (Sandbox Code Playgroud)
框请求.java
@Service(value=BoxDao.class, locator=DaoServiceLocator.class)
public interface BoxRequest extends RequestContext {
Request<List<BoxProxy>> listAllEmpty();
}
Run Code Online (Sandbox Code Playgroud)
BoxDao.java
public class BoxDao extends ObjectifyDao<Box>{
public List<Box> listAllEmpty() {
Objectify ofy = ObjectifyService.begin();
Query<Box> q=ofy.query(Box.class).filter("title", null).filter("description", null);
List<Box> results = q.list();
return results;
}
}
Run Code Online (Sandbox Code Playgroud)
错误
04-may-2013 12:29:18 com.google.web.bindery.requestfactory.server.RequestFactoryServlet doPost
GRAVE: …Run Code Online (Sandbox Code Playgroud) 我有一个objectify中的实体组,典型的SomeParentClass和SomeChildClass.我想做这样的事情从数据存储区加载SomeChildClass的实例.
ofy().load.type(SomeChildClass.class).id(idOfSomeChildClassInstace);
Run Code Online (Sandbox Code Playgroud)
这没有发现什么.似乎您需要知道SomeChildClass的父级才能从datestore获取它.我知道这是有效的.
Key<SomeChildClass> k = Key.create(someParentClass.generateKey(), SomeChildClass.class, idOfSomeChildClassInstace);
ofy().load().key(k).now;
Run Code Online (Sandbox Code Playgroud)
如果我想在不知道父级的情况下加载SomeChildClass的实例,只需具有SomeChildClass的id即可.
我正在谷歌和引擎和客观化,因为在过去3个小时,我一直在尝试在客体化中写一个独特的查询.任何人都可以告诉我如何在特定列的客观化中编写一个独特的查询?
此致,Sreekanth
我想有效地查询索引字段以检索索引字段不为空(存在于索引中)的所有记录.要查询的字段包含Ref<T>另一个实体,如果这是相关的.
我能做的是不等式搜索,比如.filter/.filterKey("fieldname >=", "a"),a是我想要抓取的最小的ASCII.
但这有效吗?或者我可以以某种方式进行相等搜索,它会返回索引中存在的所有记录吗?
-
这就是我的数据的样子:我想过滤"overlay"列有一个键的所有记录,并省略那些没有设置字段的记录.我想尽可能使用相等过滤器,所以我不需要复合索引(因为我同时在其他字段上过滤).

-
我可以用它来测试 != null
.filter("user >", "\uFFFD");
Run Code Online (Sandbox Code Playgroud)
这是为了测试 == null
.filter("user <", "\uFFFD");
Run Code Online (Sandbox Code Playgroud)
我猜这不是它应该做的方式.有没有办法用平等而不是不平等来解决这个问题?
我正在尝试使用objectify从我的数据存储区中删除实体,但即使在关闭实例并重新启动它之后似乎也没有删除.这是实体在数据存储区中的样子(无论是在生产服务器和开发服务器上):

这是我用来尝试删除它的代码:
@ApiMethod(name = "deleteDataVersion")
public Result deleteDataVersion(@Named("id") String id) {
// Where id is the id of the entity in the datastore.
if (id != null && !id.equals("")) {
ofy().delete().type(DataVersion.class).id(id).now();
return new Result(Result.STATUS_SUCCESS);
} else
return new Result(Result.STATUS_FAILED);
}
Run Code Online (Sandbox Code Playgroud)
我也试过这段代码:
@ApiMethod(name = "deleteDataVersion")
public Result deleteDataVersion(@Named("id") String id) {
if (id != null && !id.equals("")) {
// DataVersion doesn't have a parent.
Key<DataVersion> key = Key.create(null, DataVersion.class, id);
ofy().delete().key(key).now();
return new Result(Result.STATUS_SUCCESS);
} else
return new Result(Result.STATUS_FAILED);
}
Run Code Online (Sandbox Code Playgroud)
但该实体永远不会被删除.这是我的实体的代码: …