問題タブ [hibernate-onetomany]

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

java - OneToMany / nullable 関係での Hibernate のパフォーマンスの問題

@OneToManyParent->Child->Child->Child DB 関係に使用します。

大量のデータ (100K の挿入) を使用するシナリオでは、挿入時にパフォーマンスが大幅に低下します (実際にはタイムアウトになります)。ただし、少量のデータ (1K 挿入) の場合は問題ありません。

そのため、正当な理由がないためnullable = false、子テーブルの DB 外部キーを削除して変更し、null を許可すると、パフォーマンスが非常に良好になりました。誰でもこれを説明できますか?


更新:デバッグをオンにしました..nullable = false子テーブルのIDを生成する大きなボトルネックがあるようです。ID が生成されるのを待ってタイムアウトし、これがログに何度も記録されます。

DBにデータを挿入することさえできません。id gen に行き詰まっています。現在、子テーブルに現在ある最大 ID 値を見て ID を生成するように Hibernate を設定します。

これより前は、DB シーケンスを使用していましたが、同じ問題が発生していました。

を省略するnullable = falseと、これらの ID gen ステートメント (108K) が表示されますが、25 秒で完了します。では、なぜこれらのステートメントは (文字通り) 永遠にかかるのnullable = falseでしょうか?

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

hibernate - マップされていないクラスでの Hibernate マッピング

私は 2 つのテーブルを持っています... Challenge と ChallengeYear、ChallengeYear は課題の年のリストを作成するだけです。

リストの年のリストを含む、Challenge をエンティティにしたいだけです。これは可能ですか?

@JoinColumn および @OneToMany と一緒に @SecondaryTable を調べましたが、どちらもうまくいかないか、何かを見落としています。

誰かが私を助けることができますか?

こんにちは、ヤン

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

grails - Grailsの1対多の関係で親を削除すると、子でbeforeInsertイベントが呼び出されるのはなぜですか?

私には1対多の関係があり、複数の子を持つ親を削除しようとすると、最初の子でberforeInsertイベントが呼び出されます。このイベントには、親を削除するときではなく、子を挿入する前に呼び出すコードがあります。何が間違っているのかについてのアイデアはありますか?

エンティティ:

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

java - Hibernateで失われました-OneToManyにより、1つが何度も引き戻されます

私はこのDBデザインを持っています:

そしてこの休止状態のマークアップ:

そして、私はレポートとそのレポートの4つのプロパティに挿入しました。今私がこれを実行すると:

レポートは、4つのプロパティを含むマップで1回だけではなく、4回返されます。正直に言うとHibernateは得意ではなく、ストレートSQLを好みますが、学習する必要がありますが、それが何であるかわかりません。それは間違いです.....?

助言がありますか?

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

java - 一対多関係におけるCascadeTypeの問題

互いに一方向の1対多の関係を持つ2つのクラスがあります。

データベースに FieldMapper のセットを含むオファーを保存したいと考えています。OneToMany で CascadeType.ALL を使用すると、次のエラーが発生しました。

CascadeType を別のものに変更すると、次のエラーが発生しました。

そして、ここに Offer を保存します:

他の場所ではセッションを使用しません。

tx.commit();インラインスローは説明された例外をスローします。

ご協力いただきありがとうございます。

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

hibernate - Hibernate:OneToManyマッピングはPKに基づいていませんか?

2 つのエンティティ/テーブルがあります。

1つは適切なエンティティです。それを と呼びましょうdata。いわゆる「多言語コード」を含む多くのフィールドがあります。

2 番目のテーブル にcodeは、多言語の値自体が含まれています。

ここにいくつかのサンプルデータがあります:

次のように、データエンティティのプロパティの大陸、国などをマップとしてマップしたいと思います。

そのため、次のように適切な言語のテキストを読むことができます。

また、ユーザーの言語を使用して、これらの「コード」の値をテキスト検索できるようにする必要もあります。(たとえば、フランス語で country='suisse' のすべてのデータを取得します!)

OneToManyでは、現在のエンティティの主キーではないキー フィールドを使用してコレクションをマップすることは可能ですか? 大陸コレクション「コード=私のcontinentCode財産の値であるコードテーブルからのすべてのレコード」が必要です。それとも、この種の関係を表現するためのより適切な方法があるのでしょうか?

NB : 残念ながら、SQL スキーマを変更することはできません...

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

java - forループのGrails AddTo

私はgrailsの初心者であるために問題に直面しています。ストーリーを読むためのWebサイトを作成しています。私の目標は、ストーリーのコンテンツをいくつかのページに保存してリストを取得し、簡単にページ付けすることです..だから私は次のことをしました。

ドメインで、ストーリーと呼ばれる2つのドメインを作成し、これを持っています:

}

もちろん、ページと呼ばれるドメインには次のものがあります:

}

コントローラーの保存方法は次のようになります。

私はそれが乱雑に見えることを知っていますが、それはプロトタイプです..とにかく..問題は、条件がtrue ..しかし、実際には、ページを1つずつ保存する必要があると思っていたときに、最後のpage_idxのみで最後のインスタンスが表示されるので、すべてのストーリーのページのリストを取得できます..

なぜこれが起こるのか、私がやったことよりも簡単な方法があります..

私はここで感謝されている助けを待っています

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

java - Hibernate:識別関係のレコードなしでエンティティのレコードを取得するための HQL を作成するにはどうすればよいですか?

Hibernate Objects を次のように定義しています

タグを持たない SomeText オブジェクトをすべて取得したいと考えています。以下のHQLを書いたのですが、うまくいきません。

これらのレコードを取得するにはどうすればよいですか。SQL の世界では、text_tag_reln テーブルから個別のすべての textId を取得し、そのセットに存在しないすべての SomeText ID を取得するクエリを作成します。HQLでこれを行うにはどうすればよいですか?

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

hibernate - Hibernate1対多

Hibernateのドキュメントによると:

1対多側を所有側として双方向の1対多をマップするには、mappedBy要素を削除し、manyを1に挿入可能および更新可能としてfalseに設定する必要があります。このソリューションは最適化されておらず、いくつかの追加のUPDATEステートメントを生成します。

私の質問は次のとおりです。

  1. このような設定の利点は何ですか。所有側としてメニートノン側を作ってみませんか
  2. この設定でこれらの2つの値が必要な理由:insertable = false、updatable = false
0 投票する
1 に答える
4222 参照

java - 休止状態:マルチキーテーブルのキーの1つと結合する

テーブルCategoryとテーブルTranslatableTextがあります。カテゴリはこんな感じ

カテゴリエンティティで、マッピングを定義しました。

ただし、実行すると、idではなくTranslatableDescriptionIdにアクセスしようとします。TranslatableTextエンティティが定義している場合でも

間違った名前が選択されたクエリ:

translatab0_.TranslatableDescriptionId as Translat4_13_1_、translatab0_.id as id1_、translatab0_.lang as Lang1_、translatab0_.id as id22_0_、translatab0_.lang as Lang22_0_、translatab0_.text as Text22_0_ as tblTranslateableText translatab0_ where translatab0_.text as Text22_0_ from tblTranslateableText translatab0_ where 119'、' 103'、' 116'、' 121'、' 107'、' 113'、' 101'、' 109'、' 105'、' 123'、' 106'、' 125'、' 124 ' 、'114')

マッピング@JoinColumnを次のように変更した場合

アプリをロードすると、次のエラーが発生します。

org.hibernate.MappingException:論理名の列が見つかりません:org.hibernate.mapping.Table(Category)および関連するスーパーテーブルとセカンダリテーブルのID

良い方法として、私も試しました:

それは私にエラーを与えました:

org.hibernate.MappingException:論理名の列が見つかりません:org.hibernate.mapping.Table(Category)および関連するスーパーテーブルとセカンダリテーブルのTranslatableDescriptionId

私がすべきことへの提案はありますか?私は本当にCategoryのtranslateableTextにその説明のすべての翻訳を含めたいので、Category.TranslatableDescriptionId==TranslatableText.idに参加したいと思います。

UPDATE1:TranslatableTextは多くのエンティティで使用されているため、categoryIdをその中に入れて、関係を逆にすることはできません。

UPDATE2:と言ってロードできました@JoinColumn(name="id")が、これによりHibernateでClassCastExceptionが発生し、キーとして整数を使用する代わりに、キーとして単一の整数を含む配列が使用されました。これは文字列にできないため、適切なSQLになりません。だから、それはおそらくまだ私が望むマッピングではありません

乾杯

ニック