エンティティに通貨値 (インデックス化されていない) を格納する必要があり、取得しています
java.lang.IllegalArgumentException: kmrate: java.math.BigDecimal is not a supported property type.
グーグルで調べてみると、 BigDecimalLongTranslatorFactory がソリューションの一部である可能性があるようですが、ドキュメントや例が見つかりません。
エンティティに通貨値 (インデックス化されていない) を格納する必要があり、取得しています
java.lang.IllegalArgumentException: kmrate: java.math.BigDecimal is not a supported property type.
グーグルで調べてみると、 BigDecimalLongTranslatorFactory がソリューションの一部である可能性があるようですが、ドキュメントや例が見つかりません。
BigDecimalLongTranslatorFactory() のドキュメントには、「登録と同時に」インストールするように書かれていますが、登録前でなければならないことがわかりました。
たとえば、エンティティを登録するために推奨される「独自のサービスを使用する」アプローチを使用すると、次のようにすると、後で BigDecimal プロパティを含むエンティティの save() が UnsupportedOperationException で失敗します (「サポートされていないデータ型: java.math.BigDecimal」というメッセージが表示されます)。 ):
public class OfyService {
static {
factory().register(Thing.class);
factory().register(OtherThing.class);
factory().getTranslators().add(new BigDecimalLongTranslatorFactory());
}
public static Objectify ofy() {
return ObjectifyService.ofy();
}
public static ObjectifyFactory factory() {
return ObjectifyService.factory();
}
}
しかし、登録前に行うと機能します。
public class OfyService {
static {
factory().getTranslators().add(new BigDecimalLongTranslatorFactory());
factory().register(Thing.class);
factory().register(OtherThing.class);
}
public static Objectify ofy() {
return ObjectifyService.ofy();
}
public static ObjectifyFactory factory() {
return ObjectifyService.factory();
}
}
私は Objectify の翻訳システムを詳しく調べて、これがなぜなのかを正確に調べていません。
注: Objectify 4.0b3 を使用しています。