問題タブ [spring-boot-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.

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

java - Spring JPA の多対 1 アソシエーションが関連エンティティを更新しない

多対一の関連付けを使用して DB に JPA エンティティを挿入する際に問題があります。

私は使用しています:

  • スプリング ブート 2.1.4.RELEASE
  • Ecliselink 2.7.4.RC2 (org.eclipse.persistence.jpa)
  • spring-boot-starter-data-jpa

私はSpringのリポジトリを使用しています.saveメソッドしかなく、insert、merge、updateメソッドはありません。

DbWatchlist別のエンティティとの多対 1 の関連付けを持つエンティティを使用していますDbWatchlistProvider

塗りつぶされDBWatchlistたフィールドで新しいものを作成すると、すべて正常に機能します。DbWatchlistProviderまた、既存のフィールドを変更し、DbWatchlistここでもフィールドを変更DbWatchlistProviderして、すべてを保存すると機能します。

しかしDbWatchlist、既存のDbWatchlistProviderJPA で新しいレコードを作成しようとすると、常に新しいレコードを挿入しようとしDbWatchlistProviderます。

DbWatchlistProviderエンティティに挿入する前にデータベースからを読み込もうとしましたがDbWatchlist、その後保存を行いましたが、ここでも INSERT が行われました。これにより、例外が発生します。

私のコード:

私のテストでは、次のことを試しました。

最後の保存まで、すべてがエラーなしで機能しており、期待どおりです。DbWatchlistProvider何が問題なのか、なぜ挿入しようとしているのに更新されないのか、誰かに何か考えがありますか?

例外は次のとおりです。

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

mysql - JPA リポジトリを使用して、Mysql ビューからデータをプル/フェッチできますか? はいの場合、どのように?

JPARepository を使用してデータをフェッチするテーブルがたくさんあります。次に、MySql - View で作成し、JPARepository を使用して findAll を実行しようとしましたが、機能していません。

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

spring-boot - @DataJpaTest @SpringBootTest を 1 つの MVC アプリケーションで組み合わせて、すべてのレイヤーをテストするにはどうすればよいですか?

ここhttps://stackoverflow.com/a/52968130/10894456 では、 @DataJpaTest @SpringBootTest を 1 つのアプリケーションに混在させてはならない理由がよく説明されています。

しかし、とにかく MVC SpringBoot アプリケーションのすべてのレイヤーをテストする必要があるケースについてはほとんど説明しませんでした (私の考えでは、1 つまたは別のレイヤーだけでなく、両方、さらにはすべてのレイヤーをテストするのは自然なことですよね?)

そのため、@DataJpaTest ではなく @AutoConfigureTestDatabase を使用する解決策が提案されましたが、ジョブは完了しませんでした (((

私の質問は次のとおりです。 @AutoConfigureTestDatabase を使用するのは適切な解決策ですか? はいの場合、詳細を説明してください。いいえの場合は、より適切な解決策を提案してください、ありがとう

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

java - Spring CrudRepository 保存メソッドのカスタム戻り値の型 (動的射影)

CrudRepository検索クエリ メソッドの次の例のように、Spring の save メソッドのカスタム戻り値の型を定義できるかどうか疑問に思っています。

ドキュメントでは、クエリ メソッドを使用した動的プロジェクションの例しか見つかりませんでした。

私は試した

しかし、次のエラーが発生します。

これを機能させる方法はありますか?

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

java - 集計値のSpring Boot jpaクエリビルダー?

集計値を出力するカスタマイズ可能なクエリを作成したいと考えています。クエリを取得して実行する 3 つの方法を知っていますが、どれも十分ではないようです。作成したいクエリは次のようになります。

tldr: 1 と 2 をスキップします。

  1. 文字列としての SQL
    • private NamedParameterJdbcTemplate template; template.query("select ..." , new MapSqlParameterSource("...", "...") , rs -> {...rs.getString("minprice")...
    • 長所: クエリから結果にアクセスできます
    • 短所: クエリ ビルダーを使用していません。"select..." 文字列を自分で作成する必要があります。
  2. リポジトリの使用
    • public interface MytableRepository extends CrudRepository<Mytable, Integer> { @Query("Select ...") public List<Object[]> findMinMaxPrice(@Param("myParam") String myParam);
    • 長所: クエリから結果にアクセスできます。
    • 短所: クエリがハードコーディングされている
  3. クエリ ビルダーの使用
    • Specification<MyTable> spec = Specifications.<>where((mytable, query, cb) -> { Predicate sql = cb.equal(mytable.get("k"), "v"; return sql; } List<Mytable> result = myJpaSpecificationExecutor.findall(spec);
    • 長所:クエリビルダーを使用しています
    • 短所: クエリは groupBy を使用していません。groupBy クエリはクラスのレコードではMytableなく集計値を返すため、これを機能させる方法がわかりません。から選択を開始するMytableので、それを型パラメーター to として使用する必要があると思いますがSpecification、それはすぐに結果も型MyTableにする必要があることを意味しますね。

柔軟な結果タイプでクエリビルダーを使用するにはどうすればよいですか?