はじめに
Isarはflutterのデータベースパッケージのひとつです。
Hiveの後継にあたり、処理速度の速さや豊富なAPIに強みがあります。
Emmbed Objectとは
Isarコレクションは、bool,String等の基本的な型のほかに、ネストされたオブジェクトをフィールドに持つことができます。
例えば以下のようなものです。
@collection
class Email {
Id? id;
String? title;
Recepient? recipient;
}
@embedded
class Recepient {
String? name;
String? address;
}
Nameアノテーションとは
Isarコレクションは、Nameアノテーションを用いてコレクション・フィールドの名前を設定することができます。
例えば以下のようなものです。
@collection
@Name("SpecialEmail")
class Email {
Id? id;
String? title;
}
Emmbed ObjectにNameアノテーションは使えない
さて、Emmbed ObjectにNameアノテーションをつけるとどうなるでしょうか?
コード生成には成功しますが、新規のIsarインスタンスを作成した際に、以下のようなエラーが発生します。
IsarError: SchemaError: Target collection does not exist.
このメッセージからはEmmbed Objectが理由でエラーが発生していること読み取れないため、注意が必要です。
参考