gpt4 book ai didi

java - 当父类(super class)不是 @Entity 时,如何在 Objectify 中索引父类(super class)属性

转载 作者:行者123 更新时间:2023-12-01 11:01:44 25 4
gpt4 key购买 nike

tl;博士:当属性派生自非 @Entity 父类(super class)时,是否可以将 @Index 设置为 Objectify 实体属性。

长版:

Java 项目包含应用程序使用的抽象模型类,而不是具体对象(Objectify 实体)。对于每个这样的模型,都存在一个 @Entity,它扩展模型并添加持久层 (Objectify) 的细节。

一个简单的例子:

public abstract class UserModel {
protected String givenName;
}

@Entity
public class UserImpl extends UserModel {
@Id
private Long id;
}

我选择这种方法是因为我想独立于持久层使用模型类。因此,模型类不能包含持久层特定的注释或代码。

我知道在 Morphia(一个 MongoDB ORM)中可以像这样注释 @Entity 类:

@Indexes(@Index(value = "superGivenName", fields = {@Field("givenName")}))

在Objectify中是否可以实现类似的效果?它不一定是带有注释的解决方案。不过,应该可以将解决方案封装在 @Entity 类中。

注意:我将发布一个可能的解决方案,但我正在寻找更具风格/美观的东西,所以当您有更好的想法时,请随时回答。

最佳答案

我认为您不会找到令您满意的答案。 Objectify 不提供任何类似的内置行为。

我假设您担心 Objectify 注释会泄漏到您将广泛分发的客户端 jar 中(android 或某种 rpc)。我强烈建议为您的 API 创建单独的模型类,原因很简单,它将您的数据模型(将发生变化)与 API(可能会根据不同的时间表发生变化)分离。现场升级客户端很困难。通过单独的类,您可以使用 IDE 重构数据模型,而不必担心破坏向后兼容性。

如果您使用 http://projectlombok.org ,数据传输对象中涉及的样板几乎为零。

关于java - 当父类(super class)不是 @Entity 时,如何在 Objectify 中索引父类(super class)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33283755/

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