問題タブ [foreign-collection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ドメイン クラスでの ForeignCollection の初期化
多対多の関係を持つドメイン オブジェクトがあります。Menu
は多数持つことができ、多くの中Categories
に入ることができます。を担当しています。Category
Menus
Menu
Categories
私は自分のアプリケーション用に非常に階層化された設計を行い、ドメイン クラスはDAO
-s (ファクトリ クラスとリポジトリ クラスにアクセスし、関係を同期させるための特別な同期クラスを持っています) およびアプリケーション層 (そこでサービスを使用します。たとえばAddMenuService
、すべての場所でロジックが存在します)。
たとえば、Menu
andCategory
オブジェクトを作成します。特別なアペンダー クラスを介して、このカテゴリをメニューに追加します。次に、オブジェクトを同期します (検証、オブジェクトがデータベースに存在するかどうかを確認するか、新しいオブジェクトを作成し、必要に応じて他の Synchro クラスを呼び出し、相違点からオブジェクトを比較し、それらを保存または更新します)。カテゴリは、MenuSyncro を介してのみ追加できます。
を使用できることはわかっていますが、最初にDAOオブジェクトにアクセスせずにクラス内およびクラス内で初期化する方法はありますか?これらのコレクションが初期化されていないために例外が発生Dao.getEmptyForeignCollection(String fieldName);
し続けるためです?ForeginCollection<MenuCategory> categories;
Menu
ForeignCollection<MenuCategory> menus;
Category
NullReference
クラス
Menu.class
カテゴリ.クラス
}
MenuCategory.class
前もってありがとう、悪人
ormlite - ForeignCollection.add()は、同じオブジェクトに対して2つの行を挿入します
私は3つのクラスを持っています:
A
getEmptyForeignCollection()で構築された熱心なForeignCollection<A>を含むB
getEmptyForeignCollection()で構築された熱心なForeignCollection<A>を含むC
BとCのインスタンスを作成し、create()を呼び出してそれぞれのデータベーステーブルに行を挿入します。ここまでは順調ですね。
Aのインスタンスを作成し、それをBのForeignCollectionに追加します。これを行うと、BaseForeignCollectionはデータベーステーブルにAsを表す新しい行を挿入します。これは期待どおりに機能します(ただし、手動でINSERTを実行することをお勧めします)。
しかし、Aの同じインスタンスをCのForeignCollectionに追加すると、BaseForeignCollectionはAsを表すデータベーステーブルに別の行を挿入します。Aはすでに存在するため、これは望ましくありません。
私は何か間違ったことをしていますか、それともこれはバグですか?私がする必要があることをする方法はありますか?
よろしくお願いします。
java - ormlite 4.42でForeignCollectionを永続化する方法は?
デスクトップアプリケーションでormlite4.42とsqliteを使用して遅延ForeignCollectionを永続化しようとしています。
のコレクションを保持するEvent
クラスがありますEventDate
:
EventDate
クラスは:
EventDates
そして、これが私がそれらを追加して永続化するために使用するコードです:
はEvenDates
sqliteテーブルに正しく追加されていますが、フィールドevent_id
はnullです:はにEventDates
リンクされていませんEvent
。
エラーメッセージはありません。私は何を間違っているのですか?
注:熱心なコレクション(追加e2.getDates().updateAll()
)を試してみましたが、どちらも機能しません。
android - ORMLite と既存の永続エンティティを外部フィールド コレクションに追加する
Language
エンティティの ForeignCollection を持つエンティティがありCountry
ます。
データベースに、たとえばフランスを代表する国を作成します。後で、その ID をクエリして取得し、これを Language の外国の国のコレクションに追加したいと考えています。
ただし、マークされた行countries.add(country)
により、不正な状態の例外がスローされます。
01-27 13:39:19.112: E/AndroidRuntime(15614): 原因: java.sql.SQLException: データベースへの挿入に失敗しました: INSERT INTO
countries
(identifier
,name
,language_id
) 値 (?,?,?) 01-27 13:39 :19.112: E/AndroidRuntime(15614): at com.j256.ormlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:22)
.add()
がデータベースと内部 DAO に存在するエンティティの再作成をトリガーするのはなぜですか? そして、代わりに何をすべきですか?
java - ORMLite が ForeignCollection を反復処理すると、例外がスローされます
を反復しようとしForeignCollection<OrderItems>
ます。これはeager
に設定すると機能true
しますが、lazy オプションはまだ機能しません。
まず、私が作る
どこでclose()
データベース接続を閉じconvertToWS()
て繰り返します。
の一部convertToWS()
:
メソッド close は、から戻った後に呼び出されconvertToWS()
ます。convertToWS()
私はどんな問題でも他のオブジェクトを扱います。
CloseableIterator
私も使用してブロックで閉じようとしましfinally
たが、成功しませんでした。これを期待して、接続を閉じません。
例外:
android - ForeignCollectionを含むクラスを永続化するときのAndroidormliteSQLException
ormliteを使用して、ForeignCollectionのみを含むオブジェクトを永続化したいと思います。クラスは次のようになります。
Petクラスは次のようになります。
私はこのようにクラスを永続化しています:
これは次の場合にクラッシュします。
「名前」などの別のフィールドをPersonに追加すると、機能します。ただし、コレクションのみを含むクラスが必要です。それは可能ですか?
android - Parsing with jackson and inserting same object to sqlite using ormlite android
I am parsing json data using Jackson from api call and trying to insert the data in sqlite using ormlite. For this i am using same model class. Here is my model classes
Here is visit model class
I can parse the json data to list of site objects by following:
List siteList = objectMapper.readValue(jp, new TypeReference>(){});
And this worked perfectly. Now i want to store all this data(list of Site objects) in the db by using ormlite(with eager foreignCollection). For this i am trying like this:
Its inserting the data to the SITE and VISIT table. BUt when i try to fetch data by queryForAll() function on SITE table it returns a foreignCollection object(site.getVisits()) but its size is 0 although i have set the eager=true.
I am asuming i have done something wrong with inserting. Please tell me what is the proper way of doing this insertion using same model class object.
arraylist - 他のオブジェクトの ArrayLists を含むオブジェクトで ORMLite を使用するにはどうすればよいですか?
私は、他の複雑なデータ型の ArrayLists を含む非常に複雑なデータ型を持つ Android Java プロジェクトを持っています。ORMLite (4.42) を使用してデータベースにデータを保存しようとしています。
ArrayLists と ForeignCollection 間の変換に大きな問題があります。これを行うことができた人はいますか?
データベースとの継続的な同期は必要ありません。代わりに、構造全体を保存する save メソッドと、メソッド全体を復元する read メソッドがあります。オブジェクトがデータベースから復元された後、受信側が orm lite の ForeignCollection ではなく ArrayList を予期するインターフェイスを介してオブジェクトが送信されます。
私のアプローチは次のとおりです。ArrayList ごとに、補完的な ForeignCollection があります。オブジェクトをデータベースに格納する前に、ArrayList の内容が ForeignCollection にコピーされ、読み戻されるとその逆になります。
データベースからデータ構造を読み取るとき、後で orm lite パッケージを知らないユーザーにオブジェクトが送信されるため、構造全体が確実に復元されるようにしたいので、eager = true を設定します。
私の複雑なデータ型は次のようになります。
問題
アカウントをデータベースに保存する前に、次のことを試みました。私の希望は、ArrayList 内のオブジェクトを ForeignCollection にコピーし、Account オブジェクトでデータベースを更新することでした。オブジェクト myAccount はデータベース内のオブジェクトと同じ ID を持っているため、そのオブジェクトの更新が必要です。
運がない。addAll メソッドは注文をデータベースに直接書き込むため、「addAll」は既存のレコードを追加して更新しないため、すべての注文が重複することになります。
そこで、最初にデータベースからすべての注文を削除しようとしましたが、やはりうまくいきませんでした:
オブジェクトはデータベースから削除されません。groups.google.com (by Philip Fu)で、これは ormlite の「既知の」問題であり、熱心な ForeignCollection は removeAll() または clear() でうまく機能しないことを読みました。
ormlite フレームワークを使用して複雑な型の ArrayLists を含むオブジェクトを操作できるようにする、私が見逃したパターンはありますか?
ormlite - クエリ オブジェクトには、条件付きの外部コレクションがあります
Android 用の ORMLite フレームワークの使い方を学んでいます。
しかし、解決するために多くの方法を試しましたが失敗したという問題に直面しました。
例えば。私は2つのデータベースクラスを持っています:
レコードがデータベースで削除されていないことが必要です。単に deleteFlag 列でマークされているだけです。
ここで、「deleteFlag = false」を持つすべてのサブジェクトを照会しようとします。各科目には、「deleteFlag = false」を持つ学生のリストもあります。
SubjectDao を使用してクエリを実行する方法はありますか???
または、次の 2 つの手順を実行する必要があります。
SubjectDao を使用して、「deleteFlag = false」を持つすべてのサブジェクトをクエリします。
科目のリストをループし、StudentDao を使用して、「deleteFlag = false」を持つその科目のすべての学生をクエリします。次に、生徒のリストをサブジェクト オブジェクトに設定します。
御時間ありがとうございます。