gpt4 book ai didi

java - 实体模型设计客观化

转载 作者:行者123 更新时间:2023-11-30 07:08:05 24 4
gpt4 key购买 nike

我正在使用一个我不确定是否完全正确的设计模型,所以我想也许我应该提出一个问题来找出解决它的最佳方法。我创建了一个具有两个字段的基本实体,例如:

     public abstract  class BaseEntity
@Index private Key<User> createdBy;
@Index private DateTime creationDate = new DateTime();

现在我还有另一个名为 User 的子类,它有自己的索引,例如:

     @Entity
@Cache
public class user extends BaseEntity
@Index private String email ;
@Index private String dob

现在,当我编写 datastore-indexes.xml 文件时,这样做是否正确:

    <datastore-index kind="User"  ancestor="false" source="manual">
<property name="createdBy" direction="asc"/>
<property name="creationDate" direction="asc"/>
<property name="email" direction="asc"/>
<property name="dob" direction="asc"/>
</datastore-index>

or

<datastore-index kind="User" ancestor="false" source="manual">
<property name="email" direction="asc"/>
<property name="dob" direction="asc"/>
</datastore-index>

谢谢。

最佳答案

在 Cloud Datastore 中,您需要的索引完全取决于您要运行的查询,而不是数据模型。 index definition文档中的部分非常有帮助。例如,如果您想运行查询:


Query<User> q = ofy().load().type(User.class)
.filter("email", "test@example.com").order("createdDate");

您需要索引:


<datastore-index kind="User" ancestor="false" source="manual">
<property name="email" direction="asc"/>
<property name="createdDate" direction="asc"/>
</datastore-index>

您列出的两个索引都无法满足查询(即使第二个索引中列出的属性是必要索引中列出的属性的超集)。

您应该使用 App Engine development server 运行您的应用程序并运行您的应用程序在生产服务中运行所需的任何查询。这将自动生成一个datastore-indexes-auto.xml准确包含服务这些查询所需的索引。

关于java - 实体模型设计客观化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39722209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com