問題タブ [many-to-one]

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 に答える
2632 参照

hibernate - Hibernate LazyInitializationException: ロールのコレクションを遅延初期化できませんでした

基本的にDAOのラッパーであるWebサービスがあります。Web サービス/DAO を呼び出して、エンティティのコレクションを要求しています。

「親」エンティティ クラスには、「子」エンティティ オブジェクトのコレクション、つまり 1 対多の関係が含まれます。「親」エンティティ コレクション (つまり、myDAO.findAll()) を取得する DAO メソッド呼び出しは問題なく返されますが、Web サービス呼び出しの最終結果は次の例外です。

背景情報:

Station と Observations の 2 つのエンティティがあります。Station エンティティ (「親」) には、Observations オブジェクト (「子」) のコレクションが含まれています。

Station エンティティの DAO クラスである StationDao には、呼び出されるメソッド findAll() の次のコードがあります。

この場合、親のコレクションが返される前に、親 (ステーション) に関連する子 (観察) のコレクションが完全に取得されることに関心はありません。ただし、応答で親 (ステーション) オブジェクトのコレクションを返す前に、これらの子 (観測) オブジェクトを完全にフェッチしようとしているようですが、元のセッションが利用できなくなったため、これは失敗しています。

このエラーを回避する方法を誰かが提案できますか? おそらく、リクエストの存続期間にわたってセッションを永続化する方法はありますか?

よろしくお願いします。

--ジェームズ

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

hibernate - Hibernate の多対 1 関係の削除が期待どおりに機能しない

次のように3つのテーブルがあります。

  1. ユーザーには userId があります
  2. UserProductEntitlement には userId と productId およびブール値があります
  3. 製品には productId があります

これは私のクラス表現です:

そのため、最初にユーザーがログインすると、すべての権限が読み込まれます。しかし、viewableProduct セットから ProductEntitlement を削除しようとすると、休止状態は更新ステートメントを次のように起動します。

ここには2つの問題があります:

  1. 削除ではなく更新を実行するのはなぜですか?
  2. これはより大きな問題です -- ステートメントは userId= のどこにありますか? userId=? の代わりに およびproductId =?

これに関するヘルプ/提案をいただければ幸いです。

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

c# - C# での XML シリアライゼーションを使用した多対 1 の関係の適切な設計について支援が必要です

次の形式のデータがあると仮定します

次のクラスを使用してそれを表します

エンティティ フレームワークと SQL を使用する代わりに、XML シリアライゼーションを使用してデータを読み書きしたいと考えています。エンティティ フレームワークを使用すると、多対 1 の関係を定義して、各製品がデータベースに 1 回だけ格納され、各注文がそれを参照するだけになるようにすることができます。上記のコードを XML シリアライゼーションで使用すると、(メモリと XML ファイルの両方に) 各製品のコピーが多数保存されることが理解できます。

これを修正するには、製品自体の代わりに製品 ID のリストを保存してから、「製品」の別のコレクションを別の XML ファイルにシリアル化することができますが、それはクリーンなソリューションとは思えません。

別のアイデアは、顧客と製品のリストを含む RepositoryClass を持つことです。その後、顧客はproductIDを保存するだけで済み、レポから「顧客」を要求すると、上記のオブジェクトの検索と構築が処理されるため、残りのコードはデータがどのように保存されたかを心配する必要がありません. それはより良い解決策のように聞こえますか?どのようにしますか?

ソリューションのもう1つの要件は、ソリューションをGUIに接続してプロパティを直接編集することをできるだけ簡単にしたいということです(実際には、バインドできる1つのXMLファイルにすべてを保存する方法が必要です) WPF ウィンドウ)。

ご意見やアドバイスをお寄せいただきありがとうございます。

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

hibernate - Hibernate での自己参照クラスの問題

親/子構造をモデル化するエンティティがあります。これが私の休止状態のマッピング ファイルです。

ここにデータがあります:

私の問題は、ビューにオブジェクトを表示しようとするたびに、多対一の関連付けが例外を生成することです。

注:Hibernate、Spring、およびJSFを使用しています

助けてくれてありがとう

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

hibernate - 休止状態挿入カスケードが外部キーを挿入しない

私は2つのエンティティを持っています:

次のようにして、ファイル(およびその後タグ)に挿入しようとしています。

次に、次を使用してDAOにファイルを挿入しています。

ログには、「ファイル」テーブルへの挿入とタグ テーブルへの 2 つの挿入が表示されますが、ファイル テーブル (file_id) を指すタグ テーブルの外部キーは NULL です。

私は何が間違っているのでしょうか?

0 投票する
13 に答える
233196 参照

sql - 1対多と多対1の関係の違い

1対多の関係と多対1の関係の本当の違いは何ですか?逆になっているだけなの?

このトピックに関する「わかりやすい」チュートリアルは、これ以外に見つかりません。初心者向けSQL:パート3-データベースの関係

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

entity-framework - EF 4.0 LINQ 1 対多 / 多対 1

LINQ と EF を使い始めたばかりです。

次の構成のテーブルのセットがあります。

PublicUtility (UtilityCode) * ----> 1 (UtilityCode) ユーティリティ (UtilityCode) 1 ------> * (UtilityCode) UtilityDetail

SQLでクエリがあります。他のいくつかのビジネス ルールに基づいて、このクエリは 1 つの値または NULL を返します。

SELECT
@UtilityCode = UtilityDetail.UtilityCode
FROM
UtilityDetail
INNER JOIN PublicUtility ON
PublicUtility.SubdivisionCode = @SubdivisionCode AND
PublicUtility.Year = @PublicUtilityYear AND
PublicUtility.UtilityCode = UtilityDetail.UtilityCode
WHERE
UtilityDetail.DebtPurposeCode = @DebtPurposeCode

エンティティへの LINQ を使用してこれを書き直すにはどうすればよいですか?

0 投票する
3 に答える
9740 参照

java - Hibernateの多対1の外部キーのデフォルト0

親オブジェクトがオプションの多対1の関係を持つテーブルがあります。問題は、テーブルがデフォルトでfkey列を0に設定されていることです。

選択するとき、fetch = "join"などを使用します。fkeyのデフォルトの0を使用して、ID 0の別のテーブルから選択するために何度も試行します。もちろんこれは存在しませんが、どうすればよいですか?存在しない関係をフェッチする際に20回以上循環しないように、0の値をNULLと同じように扱うようにHibernateに指示しますか?

0 投票する
3 に答える
444 参照

mysql - 異常な結果を与えることによるmysqlの多対1およびグループ化

次のかなり単純なセットアップに問題があります。

いくつかのデータ:

そして異常な結果をもたらすSQL:

(誤った)出力になります

現在、実際には「invoice_item」行が 4 つしかないことから明らかなように、mysql が適切にグループ化されていない理由がわかりません。

編集

私はこのようなことができることを知っています:

しかし、最初のクエリで何か間違ったことをしているかどうかを知りたいです-最初のクエリが間違った結果を出している理由がすぐにはわかりません! :(

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

performance - パフォーマンス 多対一の関係

多対一の関係を持つ 2 つのテーブルがあり、データベースからすべてのデータを読み取るときにパフォーマンスの問題があります。

ClassA は ClassB の親です

構成 ClassA

構成 ClassB

ClassA オブジェクトに classB オブジェクトが一度に含まれる、classA オブジェクトのリストが必要です。

ClassA からすべてのデータを要求すると、非常にうまく機能しますが、ClassA のエントリごとに sql ステートメントが実行され (select * from ClassB where Id==ClassA.ID)、クラス B を取得するため、非常に遅くなります。lazy フラグの設定ClassB のデータが必要なので true にするのは解決策ではありません。

すべてのデータをより良いパフォーマンスで読み取ることができるように NHibernate を取得する方法を知っている人はいますか?

ありがとう !