【问题标题】:Google Cloud Objectify - Error saving entityGoogle Cloud Objectify - 保存实体时出错
【发布时间】:2020-08-20 01:40:58
【问题描述】:

我想保存一个实体并且似乎正在下降,因为我试图索引一个具有列表的 HashMap。

这是我的课程:

**IndicadorEntity **

@Entity
public final class IndicadorEntity {
    private @Index Map<String, List<ObjetivoEntity>> objetivos;
}

ObjetivoEntity

包 com.eulen.google.efqm.datastore.entities;

导入 java.util.Date;

public final class ObjetivoEntity {
    private double objetivo;
    private boolean variable;
    private Date fechaCreacion;
}

尝试保存 IndicadorEntity 时出现以下错误:

com.googlecode.objectify.SaveException: Error saving com.eulen.google.efqm.datastore.entities.IndicadorEntity@694e7f0b: objetivos.2: java.util.ArrayList is not a supported property type.

如果我删除 @Index 它可以工作,但我需要知道哪个 IndicadorEntity 的对象为空。

谢谢。

【问题讨论】:

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


    【解决方案1】:

    数据存储区将索引的内容存在限制。但是,您几乎总是可以通过创建合成索引来解决此问题。

    例如,您可以创建一个字段private List&lt;String&gt; myCustomIndex 并使用onSave 方法填充它,用您希望能够搜索的所有内容填充它。您可以从对象层次结构中任意深度的对象中提取信息。

    然后查询您的自定义索引:filter("myCustomIndex", somevalue)

    【讨论】:

    • 认为这是可能的,因为我看到了一个关于如何使用 objectify 查询哈希图的解决方案的问题,这里是 SO
    • 该消息“...不是受支持的属性类型”来自 Google 的低级 API。出于好奇,这是v5还是v6? v6 的底层底层 API(云 sdk)在索引方面比旧的 appengine API 更强大一些,但我不知道它是否对你有帮助。
    • 我使用的是版本 5
    猜你喜欢
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    相关资源
    最近更新 更多