DatastoreNeedIndexException:找不到匹配的索引。使用Objectify

时间:2016-09-26 15:53:56

标签: java google-app-engine google-cloud-datastore objectify

在将我的代码部署到云后使用google appengine出现此错误后,我使用objectify索引进行过滤。

这是我的java类(Entity)文件,其中包含索引

@Entity
public class Session{
   @Index private Integer year;
   @Index private Key<Institute> institute;
  //some other manipulation goes below
   }

当我尝试使用像这样的objectify从数据存储区调用实体列表时

ofy().load().type(Session.class).filter("institute",t).order("year").list();//order by year

它会在我的控制台上抛出以下错误,下面的图片显示它,抱歉不太清楚

enter image description here

1 个答案:

答案 0 :(得分:5)

您需要将建议的索引定义添加到datastore-indexes.xml文件中。如果您没有此文件,则需要在/ war / WEB-INF /文件夹中创建它:

<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes
  autoGenerate="true">

    <datastore-index kind="Session" ancestor="false" source="manual">
        <property name="institute" direction="asc"/>
        <property name="year" direction="asc"/>
    </datastore-index>
</datastore-indexes>

请注意,在开发服务器上测试应用程序时,大多数索引定义都可以自动生成,但有时测试每个可能的用例并不容易,手动定义可能更容易。