谷歌云Objectify - 错误保存实体

问题描述 投票:0回答:1

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

以下是我的类。

**IndicadorEntity **

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

ObjetivoEntity

包 com.eulen.google.efqm.datastore.实体。

导入java.util.Date.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 有空的objetivos。

谢谢。

java google-app-engine google-cloud-datastore objectify datastore
1个回答
2
投票

数据存储的索引是有限制的。然而,你几乎总是可以通过创建一个合成索引来解决这个问题。

例如,你可以将一个字段 private List<String> myCustomIndex 并在其中填充一个 onSave 方法,将所有你希望能够搜索到的东西填入其中。你可以从对象层次结构中任何深度的对象中提取信息。

然后在你的自定义索引上进行查询。filter("myCustomIndex", somevalue)

© www.soinside.com 2019 - 2024. All rights reserved.