問題タブ [hbm]

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

c# - NHibernate が複合キー テーブルのデータを返すようにするにはどうすればよいですか?

データベースにジャンクション テーブルがあります。id 値を読み取り、プログラムで使用する必要があります。NHibernate にデータベース内のレコードを返させることができません。マッピング ファイルが「コンパイル」されているように見えますが、結果が返されません。

リンクテーブル

  • int id_ObjectA (外部キー)
  • int id_ObjectB (外部キー)

LinkDAO クラス:

マッピング ファイル'LinkDAO.hbm.xml':

私はこのように問い合わせています:

質問: テーブルが複合キーのみで構成されている場合、2 つの列を int 値として読み取るにはどうすればよいですか? (実際のオブジェクトへの参照があると便利ですが、int ID で十分です)

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

java - Hibernate: java.lang.stackoverflow エラーを生成する多対 1 のキーを持つ複合 ID

次のテーブルを hbm ファイルを使用して Hibernate にマップしようとしています。

ご覧のとおり、どちらも同じ 2 フィールドの主キーを共有しています。これは、additional_info から info への外部キーでもあります。

これは、hibernateTools がリレーションを定義した方法です (additional_info hbm):

そしてinfoのhbmで:

このアプローチを使用すると、java.lang.stackoverflowエラーが発生し続けます。私はさまざまなマッピング/代替の組み合わせを検索して試してきましたが、成功しませんでした-休止状態の経験があまりないため、それは野生の推測に似ています(最近ではほとんどが注釈を使用しています)。<id>andの使用を提案する人<generator>もいますが、PK と FK の両方である 1 対 1 の関係をリンクするために使用される 2 つのフィールドの例を見つけることができませんでした。

私のクラスはすべてシリアライズ可能で、equals メソッドと hashCode メソッドも自動的に生成されます。

「キー多対1」の理由もわかりません。これは 1 対 1 の関係でなければなりません。このキー多対1でコンポジットIDを使用するのは良い考えではないと読みましたが、機能する代替手段を実装できませんでした。

どんな洞察も大歓迎です。

どうもありがとう!

PS: スタック トレースの一部:

0 投票する
6 に答える
23342 参照

java - Hibernate - テーブルの主キー「id」列を更新します

私の Java アプリケーションでは、hibernate .hbm ファイルを使用してデータベースにアクセスしています。テーブルの主キー「id」列を更新することは可能ですか。私の .hbm ファイルの「id」列は次のようになります。

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

java - 外部キーで 1 対 1 で休止状態にする

d1Id という一意の ID を持つ D1 というメイン テーブルがあります。d1Id は D1 レコードを一意に識別し、テーブルの主キーでもあります。主キーとして d2seq を持つ D2 であるテーブル 2 がありますが、D2 には、D1 に外部キー制約 (私が思う) を持つ一意の d1Id もあります。しかし、それが一意であり、IDが同じであることは確かです。休止状態を使用して D1 呼び出しを行うときに d2 値を取得しようとしていますが、コンパイル時にエラーが発生するため、適切な hbm を取得できません。

問題の要点は、2 つのテーブル間に 1 対 1 の関係を確立する必要があることです。2 番目のテーブルでは、結合する ID がテーブルの主キーではありません。Google を検索して見たすべての例には、2 番目のテーブルの ID が 2 番目のテーブルの主キーでもある場合があります。私が今持っている HBM ファイルをお見せしましょう。

D2 の 2 番目の hbm で、ここで立ち往生しています

ここで d1id の 2 番目の id フィールドを使用できないのは明らかです。なぜなら、1> これは主キーではなく、2> 以前に使用したことがあるからです。では、この操作では HBM ファイルをどのようにすべきでしょうか?

また、HBM を配置したら、DTO を介して D1 にクエリを実行しながら、D2 情報を取得したいと考えています。どうやってやるの?

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

hibernate - どの休止状態パラメータを使用すればよいですか?

DEVICEID という一意の ID を持つテーブル DEVICE があります。主キーがシーケンス DEVICEINFOSEQ である DEVICEINFO という 2 番目のテーブルがありますが、この情報テーブルには DEVICE を指す外部キーである DEVICEID フィールドもあります。DEVICE HBM には、次の deviceinfo があります。

そして、私のデバイス情報hbmは次のとおりです

1 つのデバイスは Deviceinfo テーブルに 1 つのエントリしかありませんが、デバイスにはエントリがまったく必要ありません。すべてのデバイスにデバイス情報があるわけではありません。しかし、情報が存在する場合は、それを取得する必要があります。情報は別のソースから更新されており、この HBM は可能であれば更新を防止する必要があります。多対一は正しいですか?多分私は一対多を使うべきですか?

上記の HBM を使用すると、

org.springframework.dao.InvalidDataAccessResourceUsageException: クエリを実行できませんでした。SQL

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

hibernate - Hibernate Hbm 多対多マッピング - 多対多テーブルに関係が存在しない場合は他の部分を削除しますか?

このようなことを行うために hbm マッピングを構成する方法があるかどうか知りたい: 多対多関係の所有者を削除するとき、多対多テーブルで子を削除した後、エンティティも削除するそれらすべてが多対多テーブルにこれ以上子を持たない場合、リレーションシップの他の部分で。

所有者の側で属性 cascade=all を使用してこのようなことをしようとしましたが、この方法では、多対多テーブルに他のレジスタがあるかどうかにかかわらず、常に他の部分を削除します。

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

hibernate - HQL の名前付きクエリ フラグメントを再利用する

Hibernate を使用してデータベースにクエリを実行するために、HQL 名前付きクエリ (XML ファイルで定義されている) を使用しています。一部のクエリは非常に複雑で、あるクエリのかなりの部分を別の同様のクエリにコピー アンド ペーストしていることに気づきました。

「名前付きクエリフラグメント」で共通部分を定義し、そのフラグメントをすべてのクエリで再利用できるかどうか疑問に思っていましたか?

XMLでクエリを作成する方が快適だと思うので、基準APIを使用したくありません。それらのいくつかはすでに非常に怪物であり、API でそれらを実装すると、さらに読みにくくなります。

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

hibernate - Hibernate: EJB3 アノテーション付きの Java クラスを使用して hbm.xml を生成する

EJB3 アノテーションを含む Java クラスを使用して、Hibernate XML マッピング ファイルを作成する必要があります。Eclipse Java EE IDE for Web Developers Juno Service Release 2で Hibernate Tools を使用しています。この投稿で説明されているように Hibernate XML マッピング ファイルを作成するには、 しかし、同じ問題があります (その投稿に記載されています): EJB3 注釈は単に無視されます。

次の POJO がある場合:

次に、次のマッパーが生成されます

答えてくれてありがとう!

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

unit-testing - 単体テスト nHibernate マッピング

HBM ファイルを使用して、nHibernate でいくつかのテーブル値関数をマッピングしています。私たちのテーブル関数は最近かなり変更されているので、これらの変更が行われたときにマッピング ファイルが更新されていることを確認したいと思います。HBM クエリをロードし、パラメータを追加してクエリを実行する関数を実行することで、マッピング ファイルを単体テストできます。マッピング ファイルに余分な列、スペルの間違った列、または間違ったデータ型がある場合、クエリが失敗するため、何か問題があることがわかります。

しかし、マッピング ファイルにない新しい列がテーブル値関数に含まれている場合、クエリは失敗しませんか? これを私のテストに追加する方法はありますか?

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

nhibernate - 別の NHibernate マッピングの謎! hbm ファイルでカウントを取得する

hbm ファイル内のコンテナーに割り当てられたアイテムの数を取得しようとしています。私は少し掘り下げて、hbmコードをここまで取得することができました(以下!)。コンテナ オブジェクトがクエリされるたびにカウントを取得する必要があります。インターセプターを使用できますが、もっと良い方法があると思います。私は正しい軌道に乗っていますか、それとも別の戦略を使用してカウントをロードする必要がありますか?

ありがとう。

PS NH v2.2 を使用しています