問題タブ [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.

0 投票する
1 に答える
1099 参照

java - ドメイン クラスでの ForeignCollection の初期化

多対多の関係を持つドメイン オブジェクトがあります。Menuは多数持つことができ、多くの中Categoriesに入ることができます。を担当しています。CategoryMenusMenuCategories

私は自分のアプリケーション用に非常に階層化された設計を行い、ドメイン クラスはDAO-s (ファクトリ クラスとリポジトリ クラスにアクセスし、関係を同期させるための特別な同期クラスを持っています) およびアプリケーション層 (そこでサービスを使用します。たとえばAddMenuService、すべての場所でロジックが存在します)。

たとえば、MenuandCategoryオブジェクトを作成します。特別なアペンダー クラスを介して、このカテゴリをメニューに追加します。次に、オブジェクトを同期します (検証、オブジェクトがデータベースに存在するかどうかを確認するか、新しいオブジェクトを作成し、必要に応じて他の Synchro クラスを呼び出し、相違点からオブジェクトを比較し、それらを保存または更新します)。カテゴリは、MenuSyncro を介してのみ追加できます。

を使用できることはわかっていますが、最初にDAOオブジェクトにアクセスせずにクラス内およびクラス内で初期化する方法はありますか?これらのコレクションが初期化されていないために例外が発生Dao.getEmptyForeignCollection(String fieldName);し続けるためです?ForeginCollection<MenuCategory> categories;MenuForeignCollection<MenuCategory> menus;CategoryNullReference

クラス

Menu.class

カテゴリ.クラス

}

MenuCategory.class

前もってありがとう、悪人

0 投票する
1 に答える
581 参照

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はすでに存在するため、これは望ましくありません。

私は何か間違ったことをしていますか、それともこれはバグですか?私がする必要があることをする方法はありますか?

よろしくお願いします。

0 投票する
1 に答える
774 参照

java - ormlite 4.42でForeignCollectionを永続化する方法は?

デスクトップアプリケーションでormlite4.42とsqliteを使用して遅延ForeignCollectionを永続化しようとしています。

のコレクションを保持するEventクラスがありますEventDate

EventDateクラスは:

EventDatesそして、これが私がそれらを追加して永続化するために使用するコードです:

EvenDatessqliteテーブルに正しく追加されていますが、フィールドevent_idはnullです:はにEventDatesリンクされていませんEvent

エラーメッセージはありません。私は何を間違っているのですか?

注:熱心なコレクション(追加e2.getDates().updateAll())を試してみましたが、どちらも機能しません。

0 投票する
2 に答える
3141 参照

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 に存在するエンティティの再作成をトリガーするのはなぜですか? そして、代わりに何をすべきですか?

0 投票する
1 に答える
1480 参照

java - ORMLite が ForeignCollection を反復処理すると、例外がスローされます

を反復しようとしForeignCollection<OrderItems>ます。これはeagerに設定すると機能trueしますが、lazy オプションはまだ機能しません。

まず、私が作る

どこでclose()データベース接続を閉じconvertToWS()て繰り返します。

の一部convertToWS():

メソッド close は、から戻った後に呼び出されconvertToWS()ます。convertToWS()私はどんな問題でも他のオブジェクトを扱います。

CloseableIterator私も使用してブロックで閉じようとしましfinallyたが、成功しませんでした。これを期待して、接続を閉じません。

例外:

0 投票する
2 に答える
5818 参照

android - ForeignCollectionを含むクラスを永続化するときのAndroidormliteSQLException

ormliteを使用して、ForeignCollectionのみを含むオブジェクトを永続化したいと思います。クラスは次のようになります。

Petクラスは次のようになります。

私はこのようにクラスを永続化しています:

これは次の場合にクラッシュします。

「名前」などの別のフィールドをPersonに追加すると、機能します。ただし、コレクションのみを含むクラスが必要です。それは可能ですか?

0 投票する
0 に答える
1173 参照

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.

0 投票する
1 に答える
3488 参照

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 を含むオブジェクトを操作できるようにする、私が見逃したパターンはありますか?

0 投票する
1 に答える
713 参照

ormlite - クエリ オブジェクトには、条件付きの外部コレクションがあります

Android 用の ORMLite フレームワークの使い方を学んでいます。

しかし、解決するために多くの方法を試しましたが失敗したという問題に直面しました。

例えば。私は2つのデータベースクラスを持っています:

レコードがデータベースで削除されていないことが必要です。単に deleteFlag 列でマークされているだけです。

ここで、「deleteFlag = false」を持つすべてのサブジェクトを照会しようとします。各科目には、「deleteFlag = false」を持つ学生のリストもあります。

SubjectDao を使用してクエリを実行する方法はありますか???

または、次の 2 つの手順を実行する必要があります。

  1. SubjectDao を使用して、「deleteFlag = false」を持つすべてのサブジェクトをクエリします。

  2. 科目のリストをループし、StudentDao を使用して、「deleteFlag = false」を持つその科目のすべての学生をクエリします。次に、生徒のリストをサブジェクト オブジェクトに設定します。

御時間ありがとうございます。