我有一个无法注册的 Objectify 实体。
这是该类的精简版本:
@com.googlecode.objectify.annotation.Entity
public class Insight {
@com.googlecode.objectify.annotation.Id long id;
public Map<Date, Double> timeseries;
}
这是我收到的错误:
java.lang.IllegalStateException: Embedded Map keys must be of type String/Enum/Key<?> or field must specify @Stringify
我认为该错误是在 Objectify 注册期间发生的:
class OfyService {
static {
factory().register(Insight.class);
}
但这很难说,因为代码位于静态 block 中,因此有很多堆栈跟踪。
最佳答案
Objectify 不知道如何使用日期作为映射键。映射键被转换为属性名称,该名称必须是字符串。因此,您需要发明一个实现 Stringifier
接口(interface)的 DateStringifier
类。这很简单,但您有一些选择 - 您可以将日期字符串化为自纪元以来的毫秒数或某种人类可读的格式。
关于java - Objectify - java.lang.IllegalStateException : Embedded Map keys must be of type String/Enum/Key<? > 或字段必须指定@Stringify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27116477/