Java 在开发应用程序引擎服务器上使用datastore-index.xml
在开发中,appengine服务器datastore-indexes.xml似乎不起作用。这是真的吗? 另外,我用autoGenerate=“true”创建了一个datastore-indexes.xml文件,但它没有在datastore-indexes-auto.xml中生成任何索引。为什么?Java 在开发应用程序引擎服务器上使用datastore-index.xml,java,google-app-engine,Java,Google App Engine,在开发中,appengine服务器datastore-indexes.xml似乎不起作用。这是真的吗? 另外,我用autoGenerate=“true”创建了一个datastore-indexes.xml文件,但它没有在datastore-indexes-auto.xml中生成任何索引。为什么? <?xml version="1.0" encoding="utf-8"?> <datastore-indexes autoGenerate="true"> <da
<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes autoGenerate="true">
<datastore-index kind="UserData" ancestor="false">
<property name="email" direction="asc" />
<property name="email" direction="desc" />
<property name="lastName" direction="asc" />
<property name="lastName" direction="desc" />
</datastore-index>
</datastore-indexes>
这是我的刀:
public class UserDataDao {
public List<UserData> getUsers(int startRow, int limit, String columnName, boolean ascending) {
Query<UserData> query = ofy().load().type(UserData.class)
.offset(startRow).limit(limit);
if (columnName != null) {
query.order((ascending ? "" : "-") + columnName);
}
return query.list();
}
public int usersCount() {
return ofy().load().type(UserData.class).count();
}
public UserData find(Class<? extends UserData> aClass, Long userId) {
return ofy().load().type(aClass).id(userId).now();
}
}
公共类UserDataDao{
公共列表getUsers(int startRow、int limit、String columnName、布尔升序){
Query Query=ofy().load().type(UserData.class)
.偏移量(startRow).限值(limit);
if(columnName!=null){
查询.顺序((升序?“:“-”)+列名);
}
返回query.list();
}
public int userscont(){
返回y().load().type(UserData.class).count();
}
public UserData find(Class未创建其他索引,因为您仅查询单个属性。当您为属性@Index时,将自动创建这些索引
对于涉及多个属性(过滤和排序)的复杂查询,需要额外的索引
<强>提示:在一个实体上索引所有字段是一个坏主意,这将增加存储每个实体所需的多个写入,这将加快您的应用程序成本的快速增长,只考虑对您计划过滤的字段进行索引,排序< <强> > /p>您在DeVServer中运行查询吗?是的,但我使用ObjyFY。这不应该改变任何东西。ave autogenerate设置为true,系统应该在您运行查询时创建所有必需的索引…但确实如此。还有其他想法吗?Alex,该索引没有任何意义,请详细说明您正在运行的查询,我猜两者都不需要额外的索引。谢谢您的回答。但您知道排序不起作用的原因吗?columnName是orderColumnName我想对列表进行排序的列。您尝试按其排序的字段是否已编制索引?我想是的。它们具有索引注释。但是这些字段是否已在数据存储上编制索引?请记住,添加@Index只会影响保存的新实体。如果您在添加之前保存了一些,则必须重新保存这些字段,以便将其包含在IndexSo您可以按列筛选,但不能排序??
public class UserDataDao {
public List<UserData> getUsers(int startRow, int limit, String columnName, boolean ascending) {
Query<UserData> query = ofy().load().type(UserData.class)
.offset(startRow).limit(limit);
if (columnName != null) {
query.order((ascending ? "" : "-") + columnName);
}
return query.list();
}
public int usersCount() {
return ofy().load().type(UserData.class).count();
}
public UserData find(Class<? extends UserData> aClass, Long userId) {
return ofy().load().type(aClass).id(userId).now();
}
}