問題タブ [deltaspike-jpa]
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 - Deltaspike での JUnit テストのロールバック
Java SE プロジェクトで、CDI 用の OpenWebBeans で Apache Deltaspike を使用しています。@Transactional
Java EE プロジェクトで Spring Data JPA を使用しましたが、クラスまたはテスト メソッドの上にアノテーションを追加することで、データをデータベースにコミットしない単体テストをセットアップするのは簡単でした。ただし、Deltaspike で同等の手法を見つけることができませんでした。
各テストの後に手動でデータをロールバックするか、テストが実行されるたびにデータベースを削除して再作成する以外に、各単体テストが完了後にデータの変更をロールバックするように指定する方法はありますか?
私の単体テストは次のようになります。
java - DeltaSpike Test-Control - 永続ユニットが見つかりません
DeltaSpike Test-Control Module を使用して、開発中の新しい Maven アプリケーションの統合テストを作成しようとしています。
Wildfly 9 インスタンスにデプロイされています
簡単なテストケース:
私は次のようなpersistence.xml
内部を持っていsrc/test/resources/META-INF
ます:
エンティティ マネージャーは、CDI プロデューサー メソッドによって公開されています。
問題は、EntityManagerFactory
作成時に が null のままであることです。EntityManager
どんな助けでも大歓迎です。
cdi - Deltaspike データ (CDI + JPA) UTC でのカスタム java.time.ChronoLocalDateTime のカスタム PrePersistAuditListener および PreUpdateAuditListener
Wildfly 9.0.2.Final の Deltaspike バージョン 1.7.2
エンティティ Bean でJPA@EntityListeners(AuditEntityListener.class)
と Deltaspike Data ( @CreatedOn
、@ModifiedOn
および注釈) の監査機能を使用していますが、 + OR aを UTC の日付と時刻に変換@ModifiedBy
するカスタム実装があるという違いがあります。java.time.ChronoLocalDateTime
LocalDateTime
ZoneOffset
ZonedDateTime
UTCDateTime
エンティティ Bean のパーツ
エポック値がデータベースに保存されるため、UTCDateTime クラスのカスタム AttributeConverter もあります。
エンティティを永続化すると、次の例外が発生します (本当の原因の最後のビット)。
org.apache.deltaspike.data.impl.audit.PrePersistAuditListener
独自のものを実装し、org.apache.deltaspike.data.impl.audit.PreUpdateAuditListener
それらを使用して のインスタンスを作成する方法はありますUTCDateTime
か?
独自の EntityListener を作成して -->アプローチの次の場所でUTCDateTimeAuditListener
使用するのは正しいでしょうか?@EntityListeners(UTCDateTimeAuditEntityListener.class)
UTCDateTimeAuditListener
org.apache.deltaspike.data.impl.audit.AuditEntityListener
次に、インスタンスの構築方法を知ってUTCDateTimeAuditEntityListener
いる正しい実装への参照を確実に取得するために、どこかで CDI 修飾子を使用する必要がありPrePersistAuditListener
ますか?PreUpdateAuditListener
UTCDateTime
最後に、関連性があるかどうかはわかりませんが、org.apache.deltaspike.data.impl.audit.TimestampsProvider
このシナリオのどこに当てはまりますか?
アップデート
質問への回答が少し進みました。私がこれまでにやってきたこと。カスタムの必要はありませんAuditEntityListener
。DeltaSpike が提供するもので十分です。
オブジェクトTimestampsProvider
を処理できる の新しい実装を作成しました。UTCDateTime
beans.xml には、これも CDI @Alternative としてリストされています。
の内容apache-deltaspike.properties
問題は、両方のAuditProvider
インスタンスが実行されることです。最初に実装 ( UTCDateTimeAuditProvider
) が実行され、次にデフォルトが実行されます。TimestampsProvider
@Alternative 実装をアノテーションのみ、またはbeans.xmlのみ、およびクラスとbeans.xmlの両方で指定するさまざまな組み合わせを試しました。
TimestampsProvider
@Alternative の実装後にデフォルトが実行される理由を知っている人はいますか?
Wildfly 9.0.2 の Deltaspike バージョン 1.7.2.Final with Weld 2.2.16 (SP1)
spring-data - オプションのパラメーターを使用した Spring Data JPA クエリ
以下のパラメーターに基づいてデータを取得する GET エンドポイントがあります。firstName は必須で、残りはすべてオプションです。
データベースクエリにはどのようにアプローチすればよいですか? 私はSring Data JPAを使用しています、私は試しました
findByFirstNameOrLastNameOrGenderOrCity(firstName,lastName,Gender,City)
エンドポイントのコンシューマーが値を送信していない場合、firstName 以外の値のいずれかが null になる可能性があるため、@Query アノテーションを使用したネイティブ SQL クエリが機能するかどうかは不明です。親切に助けて
java - Deltaspike リポジトリ トランザクションはコミットされるが、Java SE の DB には何も保持されない
Java SE でエンティティを永続化するために DeltaSpike リポジトリを使用しており、ファイル ベースの H2 データベースを使用しています。問題は、コンソールにエラーがないにもかかわらず、データベースに何も保持されないことです。スタンドアロン クライアントを使用してデータベースの内容を確認しました。また、永続化が完了した直後にリポジトリを使用してコンテンツを取得しようとしましたが、結果は得られませんでした。
エンティティ マネージャー (純粋な JPA) を使用して直接永続化しようとすると、永続化され、GUI クライアントでファイルを開くとレコードが表示されます。
プロジェクト構造は次のようになります。
の依存関係は次のpom.xml
とおりです。
persistence.xml
ファイルは次のようなものです:
エンティティ マネージャーのプロデューサー クラス:
エンティティ クラス:
リポジトリ クラス:
リポジトリを呼び出すサービス Bean:
アプリケーションのメイン クラス:
(おそらく) DeltaSpike 構成で何が見落とされているか知っている人はいますか? それとも、そのような構成で予想される動作ですか?