問題タブ [spring-data-jdbc]
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.
spring-data-jdbc - @Version 列は、Spring データ jdbc をそのまま使用すると機能しません。
このように定義されたバージョン列があります
Spring Data JDBC では、常に INSERT を試みます。更新が行われていません。PersistentEntityIsNewStrategy
デバッグすると、デフォルトの戦略であるが使用されていることがわかります。永続化されてisNew()
いるエンティティの状態を判断するメソッドがあります。バージョンとIDがこの決定に使用されていることがわかります。
しかし、私の質問は、2 回目.save()
に呼び出されたときにisNew()
メソッドが false を返すことができるように、保存するたびにバージョン列をインクリメントする責任があるのは誰かということです。
BeforeSaveEvent
バージョン列のインクリメントを起動して処理する必要がありますか? を処理するにはそれで十分でしょうOptimisticLock
か?
編集 このように BeforeSaveEvent をリッスンする ApplicationListener を追加しました。
したがって、バージョン列は機能しますが、残りの監査可能フィールド@CreatedAt, @CreatedBy,@LastModifiedDate and @LastModifiedBy
は設定されていません!!
編集2
以下のように新しい ApplicationListener を作成しました。この場合、カスタム リスナーと Spring の RelationalAuditingListener の両方が呼び出されます。しかし、それでも問題は解決しません。バージョン列がすでにインクリメントされているため、リスナーの順序[カスタムの後にスプリングが続く]が代わりにmarkAudited
呼び出すためです。私はリスナーをまだ運が悪いようにしようとしました。markUpdated
markCreated
LOWEST_PRECEDENCE
私のカスタムリスナーはこちら
}
java - spring-data-jdbc に @BatchSize に相当するものはありますか
こんにちは、春のデータを使用してエンティティとリポジトリをマッピングしました。マッピングは非常に単純です。
Spring データ リポジトリの findAllByIds(Iterable) インターフェイスを使用します。そして、次の形式で素敵な sql を生成します。
Car ごとに、SQL を 1 つだけ実行します。
私の問題は、関連する部分がフェッチされたときに始まります。それらを1つずつ取得しているようです。春のデータjdbcには、休止状態でのバッチフェッチに相当するものがありますか?
anser が負の場合、それを実装する比較的簡単な方法はありますか?
spring-data - spring-data-jdbc でページネーションを行うことはできますか?
spring-data-jdbc で PagingAndSortingRepository を使用したいのですが、うまくいかないようです。JPAでのみ利用可能ですか?
PagingAndSortingRepository を使用して、findAll(Pageable pageable) を使用しようとしました。
しかし、実際には「findAllでクエリが指定されていません」というメッセージが表示されます