問題タブ [hibernate-annotations]

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 投票する
9 に答える
66262 参照

java - @Id なしの休止/永続化

真の主キーを持たない結果セットを生成するデータベース ビューがあります。Hibernate/Persistence を使用して、この結果セットを Java オブジェクトにマップしたいと考えています。もちろん、PKがないので、どのフィールドも で飾ることはできません@Id

デプロイするとき、Hibernate は欠落について不平を言い@Idます。どうすればこれを回避できますか?

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

java - Hibernate マッピング パッケージ

私は休止状態の注釈を使用しています。

すべてのモデル クラスで、次のように注釈を付けます。

私のhibernate.cfg.xmlは

com.fooPackage に追加するクラスごとに、次のように hibernate.cfg.xml に行を追加する必要があります。

新しいモデル クラスを追加する方法はありますが、この行を hibernate.cfg.xml に追加する必要はありませんか?

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

java - Hibernateアノテーションを使用したビューオブジェクトのSQLが間違っています

データベースビューのHibernateエンティティマッピングに取り組んでいます。それに対して基準クエリを実行すると、hibernateは不正なSQLを生成しています。私のマッピングの問題が何であるかを理解する助けがあれば大歓迎です!

データベースビューから取得しようとしている2つのマップされたエンティティがあります。ビューには他の列はなく、各エンティティのFKのみがあります。ビューには各プライマリエンティティの行があるため、これらのFKの1つをプライマリキーとして扱うことができます。したがって、ビューのDBスキーマは次のようになります。

マップされたすべての履歴レコードではなく、各プライマリの最新の履歴のみを取得するため、ビューが使用されていることに注意してください。ビューに使用しているオブジェクトとエンティティの注釈は次のとおりです。

PrimaryオブジェクトとHistoryオブジェクトの両方に、完全な作業エンティティの注釈があります。

私の基準設定:

そして(間違った)生成されたSQL:

プロジェクトのDBスキーマの詳細を編集するときに、いくつかのことをいじくりまわしたかもしれませんが、要点は、「select」句の最初のフィールドが間違っていることです。

this_.primary(view_latest_status_history.primary)はフィールドではありません。フィールドはprimary_idと呼ばれる必要があります。これは、プライマリフィールドの@Idアノテーションと関係があると思いますか?これを修正する方法はありますか?@Idを削除すると、エンティティに主キーがないというエラーが表示されます。

アップデート:

(以下に示すように)結合テーブル表記を使用してビューをフィールドとしてマップしなくなりました。アノテーションを以下のように改訂しました。このソリューションはHQLで正しく機能し、hbm2ddlが有効になっている場合に期待されるスキーマを生成しますが、基準クエリを使用して再テストしていません。

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

java - 同じエンティティとのHibernateの再帰的な多対多の関連付け

別のHibernateの質問...:P

HibernateのAnnotationsフレームワークを使用して、Userエンティティがあります。それぞれUserが友達のコレクションを持つことができます:他Userのコレクション。Userただし、sのリストで構成されるクラス内に多対多の関連付けを作成する方法を理解できませんでしたUser(ユーザーフレンドの中間テーブルを使用)。

Userクラスとそのアノテーションは次のとおりです。

ユーザーフレンドマッピングテーブルには2つの列しかなく、どちらもテーブルのuid列への外部キーtbl_usersです。2つの列はpersonId(現在のユーザーにマップする必要があります)、およびfriendId(現在のユーザーの友達のIDを指定します)です。

問題は、システム内のすべてのユーザーが他のすべてのユーザーと友達になるように友達テーブルを事前入力したにもかかわらず、「友達」フィールドがnullのままになることです。関係をに切り替えようとしましたが@OneToMany、それでもnullになります(Hibernateのデバッグ出力にはSELECT * FROM tbl_friends WHERE personId = ? AND friendId = ?クエリが表示されますが、それ以外は表示されません)。

このリストにデータを入力する方法について何かアイデアはありますか?ありがとうございました!

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

hibernate - hibernate @DiscriminatorValue は関連付けには適用されません

次の継承階層があります。

を実行すると、選択クエリsession.load(Apple.class,...)に追加されます。FRUIT_TYPE = 'APPLE'しかし、(Apple と 1:m の関係にある) FruitBowl で select を実行すると、Apple の select クエリには が含まれませんFRUIT_TYPE = 'APPLE'。なぜこれが起こるのですか?問題を修正するにはどうすればよいですか?

クエリ -- FruitBowl のクエリ

-- リンゴを取得するための Fruit のクエリ (fruit_type ='A' のレコード) -- ただし、その条件は含まれていません

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

reverse-engineering - Hibernate-アノテーションをプロパティ(メソッド)レベルからフィールドレベルに移動します

フィールドレベルでアノテーションを付けたテーブルからHibernateドメインクラスを生成するにはどうすればよいですか?Hibernate Toolsプロジェクトを使用し、データベースのテーブルからドメインクラスを生成しました。生成されたクラスには、フィールドレベルではなく、getterメソッドにアノテーションが付けられています。フィールドに注釈が付けられたドメインクラスを生成する方法を教えてください。アノテーションをメソッドレベルからフィールドレベルに移動するために、Eclipse / IDEAなどで利用できるリファクタリング機能はありますか?

あなたの助けと時間を感謝します。

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

java - 再作成された Bean の要素を削除するときに Hibernate cascade delete が機能しない

これらが私の親と私の子オブジェクトであると仮定します:

親:

子:

次の疑似コードが機能します

  • ImportTable のインスタンスを作成し、2 つの列を追加し、セッションを作成して保存し、セッションを閉じます。
  • 保存されたインスタンスを別のセッションで読み取り、1 つの列を削除します。
  • 別のセッションに保存します。
  • 列数を確認し、1 に等しい。

ただし、次の場合は機能しません。

  • ImportTable のインスタンスを作成し、2 つの列を追加し、セッションを作成して保存し、セッションを閉じます。
  • 保存されたインスタンスを別のセッションで読み取ります。
  • 保存されたオブジェクトを手動で再作成します。
  • 列を削除します。
  • 別のセッションに保存します。
  • 列数を確認し、1 に等しい。

この理由は、Java サーバー/Flex クライアント アプリケーションがあり、オブジェクトをロードしてクライアントに送信し、クライアントに必要なことをすべて実行させ、オブジェクトをサーバーに送り返す必要があるためです。それを保存。

オブジェクトを再作成すると、Hibernate が失われていると思います。私の知る限り、Hibernate はオブジェクトがデータベースから取得されるときにオブジェクトに何かを挿入します。オブジェクトを再作成するとき、オブジェクト クラスで宣言されたフィールド以外はコピーしません。これは、オブジェクトを再作成するコードです (私の単体テスト用):

オブジェクトを再作成すると、休止状態が失われると思います。私が休止状態にしたいのは、データベースにあるものとオブジェクトにあるものを比較し、違いだけを保存することです。それを行う方法はありますか?

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

hibernate - Hibernate Annotations を使用した大きなファイルの永続化

Web アプリケーションで初めて Hibernate Annotations を使用しています。私の Bean では、ユーザーがアップロードしたファイルを永続化するためにどのタイプの注釈を使用すればよいですか?

0 投票する
4 に答える
24509 参照

hibernate - Hibernate での長い文字列の永続化に関する問題

私の Web アプリケーションには、ユーザーが入力したコンテンツが最終的に Hibernate でデータベースに永続化されるテキスト領域があります。ユーザー入力が特定の長さを超えると、永続化が失敗するという問題が発生しています。この特定のフィールドがより長い文字列をサポートする必要があり、データベースの列の種類がこれを反映する必要があることを Hibernate Annotations または構成で示す方法はありますか?

これが私が得ている例外です:

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

hibernate - @OneToOne 関係に @ForiegnKey アノテーションを含めることはできますか

@OneToOne メンバーに @ForiegnKey アノテーションを含めることは理にかなっていますか。