問題タブ [soft-delete]

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

nhibernate - Nhibernate の Session.Get と Session.CreateCriteria の違い

Nhibernate Session.Get と Session.CreateCriteria の違いは何ですか?

私の話は:

私たちの製品では、インターフェイス ISoftDeletable を追加することで softDeletion を実装しました。このインターフェイスを実装する各クラスには、deletedDate および deletedBy フィールドがあります。また、AuditableEntity クラスがあります。つまり、それを実装する各クラスには、createdDate、createdBy、modifiedDate、modifiedBy があります。

ソースは次のとおりです。

また、Session.Get メソッドをオーバーライドしました。

あるコンテキストで、アプリケーションは、softDeletable および監査可能なエンティティの Get メソッドで StackOverflow 例外をスローしました。調査の結果、PrepareEntityForUpdate/securityContextService.GetLoggedUser とカスタム リポジトリの Get メソッドの間にループが作成されることがわかりました。ご覧のとおり、DeletedDate への制限についてコメントしました。これは、Session.Get(id) が作成された基準と同じ結果を返す必要があることを意味します。しかし、 this.Session.CreateCriteria(typeof(T)) を通過すると、StackOverflow 例外が発生します。これをコメントして return Session.Get(id) (deletiondate を考慮せずに) のみを残すと、すべて正常に動作します。

これにより、Session.Get と Session.CreateCriteria の動作が異なるように思えます。何か案は?

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

php - Propelは、オブジェクトがソフト削除されたことを認識しているので、子エンティティは削除された親を引き続き表示できますか?

MySQLデータベースのオブジェクトをソフト削除し、PropelORMを使用しています。ソフト削除が機能するようになりましたが、実際の行が削除されていないため、強制された親子関係が失われます。

レコードにアクセスしたときにレコードがソフト削除されたことをPropelが認識して、null参照例外がスローされないようにする方法はありますか?このように、親は削除されましたが、その子は引き続きその関係を読み取ることができますが、子を更新するとき、または新しい子を作成するときに、削除された親にアクセスすることはできません。

例えば、

BookにはAuthorIdがあり、AuthorIdに属する作成者がソフト削除された場合、次のようになります。

正しい著者を返します(表示目的のみ)。ただし、新しい本が追加された場合、ソフト削除された著者は選択できません。

その機能がPropelに組み込まれているかどうか誰かが知っていますか?

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

wpf - WPF:ソフト削除とバインディング?

INotifyProperyChanged を実装するカスタム オブジェクトがありますが、バインディングでうまく機能するソフト削除を実装できるかどうか疑問に思っています。各オブジェクトには IsDeleted プロパティがあり、このプロパティが true に設定されている場合、GUI に表示されません。Binding クラスを装飾するカスタム マークアップ拡張機能を作成することを考えていましたが、期待どおりに機能しませんでした。現在、IsDeleted をバインドされたプロパティの 1 つとして MultiBinding を使用して、コンバーターが削除されたオブジェクトを特定できるようにすることを検討しています。しかし、このソリューションは非常に複雑で退屈に思えます。

バインディングのためにソフト削除を実装する方法を知っている人はいますか?

0 投票する
15 に答える
108031 参照

sql - 論理的な削除は良い考えですか?

論理的な削除は良いアイデアですか、それとも悪いアイデアですか?

データベース内のレコードを実際に削除する代わりに、単に としてフラグを立てIsDeleted = true、レコードの回復時に としてフラグを立てることができますFalse

これは良い考えですか?

レコードを物理的に削除してからアーカイブ データベースに移動し、ユーザーがレコードを元に戻したい場合は、ソフトウェアがアーカイブ内のレコードを探して再作成する方がよいでしょうか?

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

c# - LINQ to SQL:ネストされたオブジェクトをソフト削除でフィルタリングする

IsDeletedデータベース(フィールド)でソフト削除を使用しています。ネストされたレコードを取得およびフィルタリングするためのメソッドを積極的に使用LoadWithしています。AssociateWith

これはAssociateWith、1対多の関係を表すプロパティでのみ機能します。

上記の例では、次のように述べています。関連する(削除されていない)ロールを持つユーザーを取得したい

しかし、たとえばDocument-> File(1つのファイルのみがドキュメントに関連している)のように1対1の関係にある場合、ソフト削除されたオブジェクトをフィルタリングできません。

では、1対1の関係でレコードをフィルタリングする方法はありますか?

ありがとう!

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

java - Hibernate:論理的に削除されていないオブジェクトのみをフェッチする方法

データベース内のほぼすべてのテーブルには、作成、更新、および削除されたステータス(日付とユーザー名)をログに記録する監査テーブルへのFKがあります。

監査テーブルをAuditingクラスにマップし、次のように使用します。

ご想像のとおり、ほぼすべてのエンティティがBusinessObjectから拡張されています。

すべてのbusinessObjectについて、「auditing.deletedisnull」のみを受け取るという簡単な言い方はありますか。

businessObjectに@Whereと@WhereJoinTableを追加しようとしましたが、期待どおりに機能しないようです。

現在、クエリの1つに対してこれを実行しましたが、これは機能しますが、約150あるため、すべてのクエリに対してこれを実行するのは嫌です。

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

ruby-on-rails - rails_acts_as_paranoid は、多対多の関係のレコードをソフト削除します

こんにちは、私はユーザーとメッセージを持っています。お互いのビューに影響を与えることなく、受信者と送信者の両方がメッセージを削除できます。

そのため、送信者がメッセージを削除しても、受信者にはまだメッセージが表示されていることを願っています。

2 つの属性、sender_archived_at と receiver_archived_at を追加したいのですが、むしろ rails_acts_as_paranoid で管理しています。

前もって感謝します

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

cakephp - SoftDeletableの動作に代わるCakePHP1.3?

Cake 1.3.xと互換性のあるSoftDeletableBehaviorの代替手段を知っている人はいますか?

利用可能な動作の準備ができていない場合、最新のCakeでこれを行う方法についての提案はありますか?


簡単なハックを見つけました。何よりもまず、テーブルにdeletedという名前のtinyint(1)unsignedフィールドが導入されている場合、デフォルトは0です。

app / app_model.phpに、次の関数を追加します。

次に、コントローラーのメソッド(削除を実行する)から、

キャッチは、find()を実行する場合は常に、削除された条件を指定する必要があります!=1

SoftDeletableの動作と同じ方法でこれを実装する方法をまだ理解しようとしています。

0 投票する
0 に答える
220 参照

sql-server-2005 - 既存システムへの「ソフト削除」の追加

TableAたとえば、多くのストアド プロシージャ、関数を実行するシステムを使用しています。これらの注文を削除できる方法が必要ですが、それらを記録に残します。

私たちが検討したオプションの 1 つは、DeleteフィールドをTableA入れて、すべての sprocs と関数を追加することです。

私たちが検討した別のオプションはv_TableA、テーブルではなく、このビューから読み取るようにすべての sprocs と関数を調べて変更するようなものと呼ばれるビューを作成することです。

どちらも多くの作業を伴うため、将来システムに変更を加える際には覚えておく必要があります。

これを行うには、次のようなより良い方法があることを願っています。

しかし、私はこれが不可能であることを知っています。どんな助けでも大歓迎です。

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

php - 論理的な削除のベスト プラクティス (PHP/MySQL)

問題

製品と注文を扱う Web アプリケーションで、元従業員 (ユーザー) と彼らが処理した注文の間の情報と関係を維持したいと考えています。廃止された製品とこれらの製品を含む注文との間の情報と関係を維持したい。

ただし、元従業員、廃止された製品、廃止された製品グループなどを削除するなど、従業員が管理インターフェイスを整理できるようにしたいと考えています。

ソフト削除の実装を考えています。では、通常、これをどのように行うのでしょうか。

私の当面の考え

flag_softdeleted私の最初の考えは、ソフト削除可能にする必要があるオブジェクトのすべてのテーブルに「TINYINT NOT NULL DEFAULT 0」列を貼り付けることです。または、代わりにタイムスタンプを使用しますか?

次に、関連する各 GUI に「削除済みを表示」または「削除を取り消す」ボタンを用意します。このボタンをクリックすると、ソフト削除されたレコードが結果に含まれます。削除された各レコードには「復元」ボタンがあります。これは理にかなっていますか?

あなたの考え?

また、関連するリソースへのリンクをいただければ幸いです。