問題タブ [transient]
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 - オブジェクトをJPAに永続化せずにエンティティに保存する
非エンティティ オブジェクトの同じインスタンスをデータベースに永続化せずに JPA エンティティに格納する必要があるプレイ フレームワークでアプリケーションを実行しています。それを達成できるかどうか、またはアノテーションを使用しないかどうかを知りたいです。私が探しているもののサンプルコードは次のとおりです。
@Embedded アノテーションを試しましたが、オブジェクト フィールドをエンティティ テーブルに埋め込むことになっています。オブジェクト列をエンティティテーブルに隠したまま@Embeddedを使用する方法はありますか?
c# - 基本クラスのバージョンにマップされた Fluent nHIbernate 列 - 子を保存すると、親で「オブジェクトは保存されていない一時的なインスタンスを参照しています...」というエラーが発生します
Update Date列が次のようにマッピングされている場合があります:
親 (Person エンティティ) と子 (Person の Cascade.None を持つ PersonTelephone エンティティ) が継承する AuditableEntityMapBase 基本クラスで、次のようにマップされます。
と
次のテストのように子を保存してセッションをフラッシュすると、親で「オブジェクトは保存されていない一時インスタンスを参照します - フラッシュする前に一時インスタンスを保存します」:
Person エンティティをハイドレートし、次のように PersonTelephone マッピングで Cascade.SaveUpdate の代わりに Cascade.SaveUpdate を使用して nHibernate を更新することは実行できません。
また、最初は機能した ReadOnly メソッドを使用してみました。
ただし、PersonId は Not Null 列であり、読み取り専用であるため nHibernate 挿入中に挿入されなかったため、PersonTelephone テーブルへの挿入で問題が発生しました。
悲観的ロックはユーザーの要件に合わず、OptimisticLock.All() でパフォーマンスが低下します。また、 Person エンティティ マッピングで .Cascade.None() を使用しようとしました。
機能する唯一の方法は、Person テーブルと PersonTelephone テーブルに一意の Update フィールドを設定することでした。このソリューションは私に匂いがします。次に、nHibernate エンティティ フィールドに一意の名前を付けようとしましたが、うまくいきませんでした。他の誰かがこれに出くわしましたか? エレガントなソリューションはありますか?
iphone - TableView のカスタム セクション
このサイトのいくつかの投稿を精査しましたが、正確な問題が見つからなかったので、アドバイスを探しています. 私は現在、現在の TableView をサポートするために使用する TaskList エンティティを持つアプリを持っています。エンティティの複数の属性に基づいてセクションを作成したいと考えています。たとえば、「isShared 」属性とbool
「完了」bool
属性があり、「共有」アイテム、「非共有」アイテム、および「完了」アイテムをグループ化するセクションを表示したいと考えています。
これは一時的なプロパティが機能する状況ですか? 私が見たほとんどのアプリケーションは単一の属性にしか適用されないため、それについて頭を悩ませることはできませんでした。
前もって感謝します。
core-data - コア データ一時計算属性
lastName および firstName 属性を含むエンティティがあります。この質問の範囲を超えた理由で、firstName + space + lastName の連結として計算される fullName 属性が必要です。
これは純粋に計算された値であり、やり直し/元に戻す、または一時的な属性のその他のより高度な側面 (マージなど) は必要ないため、getter メソッドをオーバーライドして計算された値を返すように指示されます。これを行う場合、唯一の懸念は KVO に準拠しているかどうかであり、keyPathsForValuesAffectingVolume を使用して、firstName または lastName への変更が fullName を監視しているすべての人に通知をトリガーするようにすることで対処できます。
何か不足していますか?私はこの環境の初心者なのでチェックしています。
grails - スキャフォールドビューにドメインの一時的なプロパティを表示する
Grails 1.3.7プロジェクトには、次のようなドメインクラスがあります。
}
そして、対応する作成/編集アクションにスキャフォールドを使用しています。
私の問題は、passwordConfirmation制約を表示するようにマークしても、スキャフォールドビューに表示されないことです。一時的なプロパティを表示するために欠けているものはありますか?出来ますか?
ありがとう
nhibernate - nhibernateのgethashcodeの動作
私はこの3日間、少なくとも私にとってはおかしな行動に苦しんでいます。基本的な概念は次のとおりです。オブジェクトはメモリ内に作成され、このオブジェクトには子のリストがあります。このオブジェクトはDBに保存され、子もカスケードモードで保存されます。これは正常に機能しますが、保存後に1つの子を削除しようとして、リストから削除しようとすると、これは機能せず、リストは子を削除しません。私が見つけたのは、リスト、HashedSet
タイプ、オブジェクトが最初にリストに挿入されたとき、保存前、保存後、同じオブジェクトが同じハッシュコードを持っていないときに、どういうわけかオブジェクトのハッシュコードをキャッシュすることです。ただし、リストは引き続き古いハッシュコードを想定しています。私はとを上書きしました、たくさんのグーグルと読書の後、私はブログ投稿を見つけGetHashCode
ましたEquals
これは、nhibernateがGetHashCode
andEquals
メソッドを使用する方法を説明しています。
これは私の実装です
最初のハッシュコードが生成される前にハッシュコードを返すorgHashCodeという変数を使用しました。このメソッドを使用すると、機能するように見えますが、これは最善の解決策ではないと思います。ハッシュコードは現在のオブジェクトに対して生成されるべきであり、それの「最初のバージョン」のために。
私の説明が十分に明確であるかどうかはわかりません。ヒントをいただければ幸いです。ありがとう
c# - NHibernate2.1.2未保存の一時インスタンス
多くの質問と回答を読みましたが、問題の解決策を見つけることができませんでした。この問題は、NHibernate1.2.1から2.1.2に移行したときに発生します。この一般的なエラーがあります:
オブジェクトは保存されていない一時インスタンスを参照します-フラッシュする前に一時インスタンスを保存します。タイプ:Mikro.FareOn.Modules.Cards.Interface.BEC.CRResidenceRegion、エンティティ:Mikro.FareOn.Modules.Cards.Interface.BEC.CRResidenceRegion
メインクラスCRResidenceのマッピング:
そして、多対多の関係にあるクラスの1つ:
クラスCRResidenceRegionの実装:
すべてのタイプのカスケードを試しましたが、どのカスケードも正しく機能しません。しかし、私の機会では、cascade="none"を好みます。クライアント側があり、1つのNHibernateセッションでサーバー側のメソッドを呼び出してオブジェクトCRResidenceRegionをロードします。ロード後、NHibernateセッションは閉じられます。クライアント上のオブジェクトが正しい、データベースからのIDが正しいなど。次に、CRResidenceオブジェクトにCRResidenceRegionオブジェクトが割り当てられます。次に、サーバー側でメソッドと呼ばれます。
私はこのようなオブジェクトをたくさん持っていますが、この問題はNHibernate2.1.2に移行したときに発生しました。カスケードスタイルを定義した後、正常に機能する場合もあります(必要に応じて、「すべて」と同様に「なし」が機能しました)。NHibernateの設定ファイルに問題がある可能性があります。
問題の以前の定義:CRResidenceのインスタンスを挿入または更新しようとすると、未保存の一時エラーに関するエラーが発生します。CRResidenceRegionのインスタンスはIdを含めて完全に初期化されているため、問題はありません。IdにEqualメソッドを実装しました。キャッシュをクリアしようとしましたが、役に立ちませんでした。カスケードをsave-updateに変更すると機能しますが、CRResidenceRegionのレコードが複製されます。1つの解決策は、CRResidenceを保存する前に、同じセッションでデータベースからCRResidenceRegionを読み取ることです(以下のコードでコメントされています)が、これは受け入れられません。
NHibernateはCRResidenceRegionへの参照を適切に失い、新しく作成されたと考えているようですが、そうではありません。
c# - NHibernate で「割り当てられた」ID を使用する
JobとLanguageの2 つのエンティティが多対 1 の関係にあります。これらのエンティティのマッピング構成は次のとおりです。
このコードを使用して、ジョブをデータベースに追加します
JobRepository.Add (Job job ) は単純です
問題は、NHProfiler をオンにしてこのコードを実行すると、 JOBテーブルにINSERTする前に次の警告が表示されることです。
警告: 識別子 47 が割り当てられた en-GB が一時的なものか切り離されたものかを判断できません。データベースのクエリ。これを防ぐには、セッションで明示的な Save() または Update() を使用します。
続いて (不要) SELECTをLANGUAGEテーブルから実行して、ID 47 のLanguageエンティティをロードします (「en-GB」はJob.SourceLanguageオブジェクトのコードです)。
私の場合、データベースからLanguageエンティティを更新、挿入、または削除したくありません(他のエンティティから参照されているだけの場合)。これは実際には不変のテーブルであり、常に正しい行で満たされています。NHibernate に、私から言語を取得し、 JOBテーブルに挿入するときに、そのIdプロパティを使用し、それがデータベースに存在するかどうかを気にしないように指示する方法はありますか?
ジョブをリポジトリに追加する前にこの行を追加すると
警告もSELECTも表示されなくなりましたが、 Languageエンティティを使用するすべての場所でこれを行うのは面倒です。
どうもありがとうございました。