問題タブ [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.
java - hibernate複合主キーには複合外部キーが含まれています。これをマッピングする方法
そこで検索しましたが、似たようなトピックが見つからなかったので、新しい質問を投稿しています。
私は既存のデータベースでHibernateを使用しています。テーブルの構造とデータは変更できません。アプリケーションはデータベースからデータを読み取り、ロジックに基づいて別のデータストアに移行しています。
ここでの問題は、複合PKマッピングに関するものです。例えば
表Aには複合PKがあります。
表Bにも複合PKがあり、この複合PKの一部はAのPKであり、ここではFKとしても機能しています。
私はいくつかの方法を試しましたが、どれもうまくいきません。誰かが動作しているHibernateマッピングソリューションを教えてもらえますか?注釈スタイルが優れています。
hibernate - Hibernate アノテーションと hbm2ddl を使用して結合テーブルにインデックスを作成することは可能ですか?
多対多の関連付けに 2 つのエンティティがあります。hbm2ddl がアクティブ化されている場合、Hibernate はこの関連付けの結合テーブルを作成します。ただし、このテーブルにはエンティティがないため、@Index アノテーションを適用できません。結合テーブルでインデックスと主キーを生成するように hibernate hbm2ddl に指示する方法はありますか?
hibernate - Hibernate Annotation + AspectJ -> HQL の属性名 pbs
アスペクトを使用して、休止状態の注釈付きクラスにパラメーターを挿入する方法を探しています。
これがユーザーです:
これがそのユーザーに貢献する側面です
今、私はリクエストをしたいと思います:
私が次のようにしている場合:
「ユーザーから」私はresult.getCityName()のように問題はありません。
「from User where cityName=?」を実行すると、うまくいきません...
アスペクトの揺れによるものです。プライベートな String cityName を hibernate の "cityName" に関連付ける代わりに、class$ajc$intertype$interface$cityName のような使用できないインタータイプ名に関連付けます。
これを回避する方法はありますか?hql属性名の関連付けを変更しますか?
どうもありがとうございました !
java - JPA/Hibernate DDL 生成; CHAR と VARCHAR
Hibernate hbm2ddl ツールを使用してデータベース DDL を生成する JPA/Hibernate データ モデルがあります。データベースには、CHAR である必要がある文字列と VARCHAR である可能性がある文字列があります。DDL の手作業による編集を最小限に抑えたいと考えています (いくつかは行わなければならないことを認識しています)。
これについてどうすればよいか知っている人はいますか?ハッキングされた方言を介してすべての文字列 VARCHARS または CHARS を作成できることを認識していますが、それはデータベースで常に適切なものではありません。
クラスのカスタム列定義テキストを避けて、注釈または aop を使用してこれを実行できるようにしたいと考えています。
ありがとう。
hibernate - アノテーションを使用して休止状態でデータベーススキーマをプログラムで検証するにはどうすればよいですか?
org.hibernate.cfg.Configurationオブジェクトを使用して、validateSchemaメソッドを呼び出すことでプログラムで検証を実行できるようです。ただし、このメソッドには方言とdatabaseMetadataオブジェクトが必要です。私はSpringを使用しており、SpringコンテキストからAnnotationSessionFactoryBeanオブジェクトを取得できます。これまでのところ、次のコードがあります。
私は正しい方向に進んでいますか?ConnectionHelper階層はパッケージの外には表示されないため、databaseMetadataを構築するために、その方法で接続オブジェクトを取得することはできません。どうすればこれを実装できますか?
編集:私はいくつかの進歩を遂げたと思います。SchemaValidatorクラスがあります。コードは次のようになります。
しかし、今、私は次のエラーを受け取っています:
org.hibernate.HibernateException:構成用のローカルデータソースが見つかりません-'dataSource'プロパティをLocalSessionFactoryBeanに設定する必要があります
java - 複数のカタログに存在するエンティティの Hibernate アノテーション
Hibernate によってデータベース カタログ「アクティブ」のデータベース テーブルにマップされた Person エンティティがあります。一定期間後、「アクティブ」カタログ内のこのデータベース テーブルのレコードは、データベース カタログ「履歴」内のテーブルの正確なコピーにアーカイブ/移動されます。アクティブ カタログと履歴カタログの両方から取得する必要があります。2 つのクラスが拡張される抽象クラスを作成するよりも、Hibernate アノテーションを使用してこれをモデル化するより良い方法はありますか。
これは私が今持っているものです。
java - Hibernateマッピング-「タイプを判別できませんでした」
私は現在、次のオブジェクトを正常に永続化しています。
- 人名等
- 試験のタイトル、日付など。
次に、3番目のテーブルの試験結果を作成します。この表では、個人ID、試験ID、結果である必要があり、これは多対多の関係です。
エラー:
org.hibernate.MappingException:タイプを判別できませんでした:Person、テーブル:ExamResult、列:[org.hibernate.mapping.Column(person)]
私はこれを間違った方法で行っているかもしれないと思いますが、 チュートリアルからこの関係を進める方法を理解することはできません。
何か案は?
java - 休止状態の可変長ブロブ?
永続化可能なクラスの1つにbyte[]メンバーがあります。通常は、@ Lobと@Column(name = "foo"、size =)で注釈を付けます。ただし、この特定のケースでは、byte []の長さは大きく異なる可能性があります(最大10KBから最大100MBまで)。
128MBのサイズで列に注釈を付けると、中小規模のオブジェクトのために多くのスペースを浪費するように感じます。使用できる可変長のblobタイプはありますか?hibernateは、スペースを無駄にすることなく、舞台裏でこれらすべてを処理してくれますか?これについて行くための最良の方法は何ですか?
ありがとう!
java - 休止状態のレガシーシステムで複合キーを使用してテーブルを結合する
現在、レガシーシステムのテーブルのペアからロード (読み取り専用) する Hibernate アノテーション付きクラスのペアを作成しようとしています。従来のシステムは、テーブルのキーイングに対して一貫した (多少時代遅れではあるが) アプローチを使用しています。マップしようとしているテーブルは次のとおりです。
次のような CustomerAddress クラスを作成することで、これに取り組みました。
CustomerAddressKey クラスは、2 つのキー フィールドを持つ単純な Serializable オブジェクトです。Customer オブジェクトは次のように定義されます。
だから、私の質問は次のとおりです: Customer テーブルで OneToMany 関係を表現するにはどうすればよいですか?
java - Hibernateマッピングでの2レベルの継承に関する問題
これが私のクラス構造です:
そして、これが私のマッピングです(簡潔にするためにクラス本体は省略されています):
クラスA:
クラスB:
クラスC:
クラスD:
クラスE:
Aのセットを含むクラスFがあります。
問題は、新しいEインスタンスをaSetに追加してから呼び出すたびにsession.saveOrUpdate(fInstance)
、hibernateがディスクリミエーター文字列として「A」を付けて保存することです。FインスタンスでaSetにアクセスしようとすると、次の例外が発生します(簡潔にするために完全なスタックトレースは省略されています)。
クラスを間違ってマッピングしていますか?複数レベルの継承をどのようにマッピングする必要がありますか?
助けてくれてありがとう!