問題タブ [composite-id]
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 - 複合 ID での Hibernate マッピングの問題
Java アプリで hibernate3 を使用して、sqlserver 2008 エンタープライズにアクセスしています。休止状態のマッピングは複合 ID を使用し、モデルをロードしようとすると null が返されます。私はそれを解決するために何日も費やしましたが、それでも結果はありません。複数のフィールドベースの PK には複合 ID マッピングを使用する必要がありますが、私のテーブルにはそのような PK がありません。JBoss Hibernate Tool (Eclipse プラグイン) が複合 ID マッピングでそれを生成したのはなぜですか?
助けやコメントをいただければ幸いです。
休止状態のモデル:
}
}
休止状態のマッピング:
テーブル ダンプ:
テーブル:
DAO コード:
hibernate - JPA エンティティ -- org.hibernate.TypeMismatchException
環境: JDK 1.6、JEE5 Hibernate Core 3.3.1.GA、Hibernate Annotations 3.4.0.GA DB: Informix
リバース エンジニアリングを使用して、db スキーマから永続化エンティティを作成しました [注: これは作業中のスキーマであり、変更できません]
basic_auth_accounts org.hibernate.TypeMismatchException のリストを選択すると例外が発生する: クラス ebusiness.weblogic.model.UserAccounts に間違ったタイプの ID が提供されました。予想: クラス ebusiness.weblogic.model.UserAccountsId、クラス ebusiness.weblogic.model.BasicAuthAccountsId を取得
basic_auth_accounts と user_accounts の両方に複合主キーと 1 対 1 の関係があります。ここで何をすべきか手がかりはありますか?これは、私がこれを機能させるために非常に重要です。ネット上で実質的な解決策を見つけることができず、hibernate が行った ID クラスを作成すると言う人もいれば、1 対 1 の関係を持たないと言う人もいます。
私を助けてください!!
クラスのメイン コードは次のとおりです。
nhibernate - NHibernate、データベースに列が存在する場合、エンティティをロードできませんでした
これはおそらく答えるのが簡単な質問ですが、私はそれを理解できません。
「City」に多対1の複合IDを持つ「Address」に多対1の「Company」クラスがあります。「会社」をロードすると「住所」がロードされますが、「住所」のプロパティを呼び出すと、エラーが発生します。
内部例外は次のとおりです。
私が理解していないのは、SQL Server 2005 でクエリを実行でき、それが機能するということです。さらに、これらの列は両方ともアドレス テーブルに存在します。
ここに私のHBMがあります:
会社を呼び出す私のコードは次のとおりです。
そして最後に、ここでエラーが発生します:
「user」は上記のコードですでに初期化されています。
ありがとう。
.net - NHibernateで編集できる複合IDを持つことは可能ですか?
複合主キーとして使用される多くの列を持つテーブルがある状況があります。
さらに悪いことに、ビジネスロジックでは、これらを変更可能にする必要があります。
私はnhibernateを使用しており、これらをロード/保存するためのマッピングに問題はありません。ただし、プロパティ値を更新し、updateを呼び出すときにこれらの変更をDBに反映させる必要があります。
これはレガシーシステムであるため、db構造の変更はありません(恐ろしい)。
この問題を解決するためにnhibernateでできることはありますか?nhibernateは、そのキーを変更することさえ許可します。
私が使用しているのは、バックエンドとして.net4.0、nhibernate 2.1、fluentnh 1.0、およびsqlserverです。
nhibernate - nhibernate-コレクションのマージに関する問題
親子関係があり、子は複合IDを持っています
親
子
私が欲しいもの:1)DBから親を取得し、セッションを閉じ、サービスからクライアントに親を渡します2)親がクライアントから戻ったら、新しいセッションで親とそのすべての子をDBに保存します
ステップ2では、var merged = Session.Merge(product);を呼び出します。
NHibに子コレクションの追加/削除された要素を処理させる唯一の方法のように見えるのでMerge()を使用します。しかし、nHibernateは新しく追加された子のすべてのIDをリセットするため、ParentId==0およびChildId==の新しい子があります。 0.問題は、Merge()で渡されるエンティティからIDを保持するようにNHibernateに指示する方法です。..助けてください。
fluent-nhibernate - Fluent NHibernate マッピング - 複合キー
FNH で次のテーブル/エンティティをマップしようとしていますが、どこにも速くないようです!
(S#arp アーキテクチャ フレームワークも使用していることに注意してください)
複合 ID を使用する場合は、複合 ID を別のクラスに分離することをお勧めします。 ハイバネート複合キー
私は非常に多くのマッピングの組み合わせを試しましたが、今では完全に混乱しています。
これは私の最新のショットです:
マッピングを生成しようとすると、多くの例外がスローされました。最新のものは次のとおりです。
私が間違っていることは明らかですか?私は NH と FNH を初めて使用しますが、これはこの投稿から明らかかもしれません。:-) また、S#arp アーキテクチャを使用しているときに、このような複合 ID を使用した人はいますか? ベストプラクティスは何ですか (代理キーを使用する以外:-))?
どうもありがとうございました...そして長い投稿について申し訳ありません。
nhibernate - NHibernate を使用した複合キー/ID マッピング
データベースに次のテーブルがあります。
通常、多対多の関係を使用して「AnnouncementsRead」をマップしますが、このテーブルには追加の「DateRead」フィールドもあります。
これまでのところ、次のエンティティを定義しました。
次のマッピングを使用します。
ただし、これを実行すると、次のエラーが表示されます。
誰かが私を正しい方向に向けることができれば幸いです。ありがとう
nhibernate - 複合キーの問題の一部にマッピングされた NHibernate ナビゲーター - レガシー データベースの使用
変更できないレガシーデータベースがあります。そして、ガベージで遅すぎる古い DataAccess 層の代わりに NHibernate に移行しようとしています。
次のようなテーブルがあります。
GPI テーブルには (PU_ID, PAR_ID, Data, Data2) 列があります
BLOCK テーブルには (GA_ID, Data, PAR_ID) 列があります
COMPANY テーブルには (PU_ID, Data) 列があります
上記のテーブルに対してこれらのマッピングを作成しました。
GPI
ブロック
会社
クラスはとてもシンプルでわかりやすいです。すべてが Equals および GetHashCode メソッドを実装しています。
動作するナビゲーターのリストは次のとおりです。
- GroupPartnerInterest.Company - 素晴らしい作品
- Company.GroupPartnerInterests - 素晴らしい作品
- GroupPartnerInterest.Company - 素晴らしい作品
そして、これら2つは失敗します:
- Block.GroupPartnerInterests:
私は単体テストを持っています:
GPI マッピング テストでブロック ナビゲーション マッピングをコメントアウトすると、動作し、いくつかのデータが出力されます。
Block #1
Company 'LALA':
Company 'LALA SA': Company 'BG PO': Company 'LIMPOPO': Company 'HAHA': Company 'Other partner(s)': Block #4
しかし、テストは次のエラーで失敗します。
NHibernate.LazyInitializationException: Initializing[Model.EntityClasses.Block#999] - ロールのコレクションの遅延初期化に失敗しました: Model.EntityClasses.Block.GroupPartnerInterests、セッションまたはセッションが閉じられませんでした。
「999」は既存の PAR_ID です。データは一貫しています。この PAR_ID を持つ 2 つのブロックと、GPI にいくつかのレコードがあります。
ある時点でセッションを閉じるのはなぜですか?
- GroupPartnerInterest.Blocks:
単体テストは上で述べたものとほぼ同じで、異なるプロパティが使用されているだけです。エラーは次のとおりです。
NHibernate.MappingException: NHibernate.MappingException: プロパティが見つかりません: エンティティ Model.EntityClasses.GroupPartnerInterest の GroupId。
GPI マッピングの Blocks navigator の要素から "property-ref=GroupId" を削除すると、次の例外が発生します。
NHibernate.FKUnmatchingColumnsException: NHibernate.FKUnmatchingColumnsException: 外部キー (FKA3966498349694F:[BLOCK] [PAR_ID])) には、参照される主キー ([GPI] [PAR_ID, PU_ID]) と同じ数の列が必要です。
GroupPartnerInterest.Blocks ナビゲーターが機能するように、ブロックを GPI にマップする方法はありますか?
ありがとう、アレックス
java - comosite 主キーを持つオブジェクトの jpa 更新
オブジェクトの複合主キーがあります。jpa を使用してオブジェクトを更新するにはどうすればよいですか?
通常、次のコードを使用します
主キーが複合であるオブジェクトがある場合、どうすれば更新を実装できますか?
jpa - JPA - 基準 API と EmbeddedId
基準を使用して次のクエリを作成したいと考えています。EmbeddedIdが定義されたエンティティがあります。
そして、私がやろうとしている基準クエリは次のとおりです。
しかし、これは IllegalArgumentException をスローしています。
私もこのクエリで試しました:
そしてこれも…
運がない。私の質問は、クラスが Embedded および EmbeddedId アノテーションを使用している場合、基準を使用してクエリを作成するにはどうすればよいですか?
ありがとう!。マウロ。