問題タブ [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.
hibernate - プライマリテーブルのプライマリキーを従属テーブルの外部キーフィールドに繰り越す必要があります
私には2つのエンティティがあります。顧客と住所は以下のコードを見つけてください。簡単にするためにボイラープレートコードを省略しています。
アドレスクラスは:
顧客IDをアドレステーブルの外部キーとして保持する必要があります。
hibernate - Hibernate - 追加の列を持つ結合テーブルを介して自分自身を参照するエンティティ
Part という注釈付きのエンティティがあります。「id」とその他のいくつかの変数で構成されます。「bomdefinitions」という別のテーブルがあります。このテーブルには 3 つの列 (数量、親、ターゲット) があります (ターゲットがばかげた名前であることは理解していますが、データベースが既に存在するため変更できません)。アイデアは、パーツは他の多くのパーツで構成でき、他の多くのパーツでも使用できるというものです。テーブル「bomdefinitions」には、どの親がそれに関連付けられている「ターゲット」があり、何個が使用されているかが示されています。
問題は、Part.java の OneToMany リレーションシップの 1 つをコメントアウトし、もう 1 つを残すと問題なく動作しますが、コードに両方がある場合、どちらかにアクセスしようとすると、Hibernate クエリの無限ループが発生することです。 .
エンティティをそれ自体にマッピングする例、追加の列を持つ結合テーブルを使用してエンティティをマッピングする例、および注釈を行うさまざまな方法の例を見つけることができますが、単一のアプリケーション内でそれらすべてを行うものは何もありません。ここでは役に立たないようです。
Hibernate の経験が豊富な人は、私が間違っていることについて何か考えがありますか?
編集(このコードは無限ループを引き起こします):
出力のクエリは次のとおりです。次で始まります。
次に、次の 2 つのクエリが無期限に繰り返されます。
BomDefinition.java (「Java Persistence with Hibernate」からほぼ抜粋)
Part.java:
hibernate - Hibernate Annotations の混乱における複合キー
「A」と「B」という 2 つのテーブルがあります。3 番目のテーブル「C」には、「A」と「B」を直接参照する 2 つの列があります。つまり、「C」には、A の ID と B の ID をそれぞれ参照する「A_id」と「B_id」が含まれています。「A_id」と「B_id」に一意のキーが定義されています。しかし、「C」には id 列がありません。「C」のスキーマを変更せずに、「C」のモデル クラスを定義するにはどうすればよいですか。Hibernate アノテーションを使用するのは初めてなので、助けてください。'A' と 'B' には他の列もあり、それらのモデル クラスは既に定義されています。
hibernate - Hibernate が NULL 値を更新しないようにするにはどうすればよいですか
休止状態のオブジェクトを保存するときに、プロパティのnull 値を無視する設定が休止状態にありますか?
注
私の場合、JSON を Jackson 経由で Hibernate Pojo にデシリアライズしています。
JSON には、Pojo の一部のフィールドのみが含まれています。Pojo を保存すると、JSON に含まれていなかったフィールドは Pojo で null になり、休止状態で更新されます。
設定に出くわしましたupdateable=false
が、これは 100% の解決策ではありません。
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-mapping-property
多分誰かが別の考えを持っている...
注 2:
Hibernate Docs によると、dynamicUpdate
注釈はまさにそれを行います
dynamicInsert / dynamicUpdate (デフォルトは false):
INSERT / UPDATE SQL が実行時に生成され、値が null でない列のみが含まれるように指定します。
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#mapping-declaration-class
dynamic-update
docu を介して XML で定義した場合、NULL 値の処理については言及しないでください。
dynamic-update (オプション - デフォルトは false):
UPDATE SQL を実行時に生成し、値が変更された列のみを含めることができるように指定します。
注釈とxml 構成の両方を使用しているため、休止状態は注釈を無視しているようdynamicUpdate=true
です。
hibernate - DAOアノテーションで定義されたNamedQueryがHibernateセッションファクトリで見つかりません
私はHibernateと一緒にSpringを使用しています。私のDAOでは、セッションファクトリで検出されないNamedQueryを定義しましたが、そのDAOのパッケージをpackagesToScanに追加しました。
私のDAO:
そして、ここでセッションファクトリを提供するためのSpringconfigメソッド:
そしてここでスローされる例外:
同様のスタックオーバーフローの質問があるため、休止状態の@NamedQueryアノテーションを同等のJPAに置き換えました。助けにはならなかった。
hibernate - Hibernate でアノテーション構成の代わりに何を使用しますか?
以前は使用AnnotationConfiguration
していましたが、現在は廃止されています
そのため、instedを使用することをお勧めしますConfiguration
が、それでもいくつかのエラーが発生します:
.
セッションファクトリを今どのように構築するのですか?
java - @IdClassまたは@EmbeddedIdのない複合PKのみで構成されるクラスのマッピング
私は2つのテーブルA
とB
単純なPKを持っています。
A
との間の関係を単純に格納する新しいアソシエーションクラスABをB
、複合PK idA
+でマップしたいと思いidB
ます。とAB
の間の関係だけで、余分な列はありません。idA
idB
AB
単一のクラスを使用してマッピングすることは可能ですか?として、またはで使用するためだけに新しいABId
クラスを作成する必要はありません。また、またはで関連付けを使用してこれをマップしたくありません。@IdClass
@EmbeddedId
AB
@ManyToMany
A
B
hibernate - Hibernate のトランザクションでの存在チェック
春のフォーラムにこのメッセージを投稿した男性と同様の問題があります: http://forum.springsource.org/archive/index.php/t-20943.html
基本的に、私は自分が取り組んでいる Web サイトの自動登録機能を書いています。ユーザーの移行元であるサードパーティのデータベースにユーザーが存在し、DB には存在しない場合、ログイン プロセスにより、DB にユーザーが自動的に作成されます。
これを行うには、最初に、ログイン時に電子メールとパスワードを使用してユーザーを認証する必要があります。それが失敗した場合は、サードパーティの DB を確認し、この情報を使用してユーザーを作成しようとします。上記のリンクのように、この存在チェックとそれに続く挿入により、Hibernate によってメソッドがロールバックのみとしてマークされるようです。
存在チェックで Transactional Requires_New を使用して新しいトランザクションに強制しようとしましたが、このトランザクションが親トランザクションではなくロールバックのみとしてマークされることを望んでいましたが、これは機能しませんでした。
誰でもこれを行う方法についてアドバイスできますか? 上記のリンクは、ユーザーが既に存在することを確認するために重複キー エラーを挿入して使用することを提案していますが、これは面倒なようで、大幅な再設計が必要になります。
ところで、Hibernate、Spring、Annotations を使用してトランザクションを処理しています。
java - Hibernate Annotation の結合の問題
spring3 mvc で hibernate 3 アノテーションを使用して、2 つのテーブルで単純な結合操作を実装しようとしています。
私は2つのテーブルを持っています:
従業員
給料
2 つの注釈付きモーダル クラスを作成しました。
従業員.java
Salary.java
ページを開くと、次のエラーが発生しました
私のモーダルクラスに何か問題があります
ヘルプは大歓迎です、ありがとう、VKS
java - @AttributeOverride は誤ったオーバーライドを無視します。これは JPA または Hibernate 標準ですか?
MYENTITY
列ID_A
とID_B
、および@Embeddable
エンティティを持つテーブルがある場合、次のことに気付きました。
そして、私はそれを次のように使用します@Entity
:
inexistingProp
誤ったマッピング例外をスローする代わりに、オーバーライドは無視されます。これはどこにも文書化されていませんが、これは JPA の動作ですか? この問題に関する公式文書はありますか?
@Embeddable
また、 に既に正しいマッピング ( "id_a"
) があり、 をからに変更する@Column
と、次のエラーが発生することに気付きました。@AttributeOverride
id_a
foo_bar_baz
org.hibernate.MappingException: Unable to find column with logical name: ID_A in org.hibernate.mapping.Table(MY_SCHEMA.MYENTITY) and its related supertables and secondary tables
FOO_BAR_BAZ
ではなく、列が存在しないというエラーが表示されると思いますID_A
。なぜそれは不平を言っているの ID_A
ですか?
更新MYENTITY
: with@ManyToOne
に関連する他のエンティティがあり、 でid_a
明示されているため、このエラーが発生していることが判明しました@JoinColumns
。