3

主にMap<String,String>. このクラスを永続化し、マップ内のキー内を検索できるようにしたいと考えています。このStack Overflow の質問に基づいて、マップはシリアル化された BLOB としてのみ永続化できると感じています。

ORMLite Web サイトにも次のように表示されます。

public class Account {
    …
    @ForeignCollectionField(eager = false)
    ForeignCollection<Order> orders;
    …
}

上記の例では、@ForeignCollectionField アノテーションは、注文フィールドがアカウントに一致する注文のコレクションであることを示しています。オーダーのフィールド タイプは、ForeignCollection またはCollection<T>- 他のコレクションはサポートされていません。@ForeignCollectionField アノテーションは、次のフィールドをサポートしています。

以上のことから、私が望んでいることは不可能であるという印象を受けますが、念のためにここで確認しておこうと思いました。Hibernate で保持していますが、ORMLite のような軽いものを使用したいと思います!

4

2 に答える 2

4

非常に簡単な解決策の 1 つは、getter と setter をバックグラウンドで JSONObject と連携させ、そのオブジェクトを String としてデータベースに配置することです。

しかし、繰り返しになりますが、JSON は Java-out-of-the-box の一部ではないため、とにかく使用しない場合、これは不必要に感じるかもしれません。

于 2012-11-12T09:07:10.987 に答える
3

ええ、ORMLiteにはを永続化する方法はありませんMap。KISSの原則に従い、単純なCollectionクラスのみがサポートされます。 SetそしてMap、それらに対するインターフェースの重みがはるかに大きく、おそらくサポートされることはないでしょう。

私はあなたのために素晴らしい回避策を持っていません。その方法でコレクションにアクセスする必要がある場合は、明らかに使用ForeignCollectionして、作成するローカルフィールドを作成できます。Map多分それをとaddOrder()に追加するメソッド。ForeignCollectionMap

于 2011-11-10T13:22:36.843 に答える