タグ付けされた質問 「spring-data-jpa」

Spring Data-JPAは、JPAベースのリポジトリーの実装を容易にするSpring Dataアンブレラプロジェクトの一部です。


7
Spring DataでfindAllでOrderByを使用する方法
私は春のデータを使用しており、DAOは次のようになります public interface StudentDAO extends JpaRepository<StudentEntity, Integer> { public findAllOrderByIdAsc(); // I want to use some thing like this } 上記のコードでは、コメント行が私の意図を示しています。Spring Dataは、ASC / DESCのある列ですべてのレコードの順序を見つけるためにそのような方法を使用する組み込み機能を提供できますか?


9
spring-data-jpaを使用してエンティティを更新するにはどうすればよいですか?
まあ質問はほとんどすべてを言います。JPARepositoryを使用してエンティティを更新するにはどうすればよいですか? JPARepositoryには保存メソッドしかないため、実際に作成または更新されたかどうかはわかりません。たとえば、データベースUserに単純なオブジェクトを挿入します。これには、3つのフィールドfirstnameがlastnameありageます。 @Entity public class User { private String firstname; private String lastname; //Setters and getters for age omitted, but they are the same as with firstname and lastname. private int age; @Column public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } @Column …

3
Spring CrudRepository findByInventoryIds(List <Long> inventoryIdList)-IN句に相当
Spring CrudRepositoryでは、フィールドの「IN句」をサポートしていますか?つまり、次のようなものですか? findByInventoryIds(List&lt;Long&gt; inventoryIdList) そのようなサポートが利用できない場合、どのエレガントなオプションを検討できますか?各IDのクエリを実行することは最適ではない場合があります。

11
Spring Data JPAにカスタムメソッドを追加する方法
Spring Data JPAを調査しています。デフォルトですべてのクラッドおよびファインダー機能を動作させる以下の例を考えます。ファインダーをカスタマイズしたい場合は、インターフェース自体でも簡単に実行できます。 @Transactional(readOnly = true) public interface AccountRepository extends JpaRepository&lt;Account, Long&gt; { @Query("&lt;JPQ statement here&gt;") List&lt;Account&gt; findByCustomer(Customer customer); } 上記のAccountRepositoryの実装に完全なカスタムメソッドを追加するにはどうすればよいですか?インターフェースなので、そこでメソッドを実装することはできません。

7
getOneおよびfindOneメソッドを使用する場合、Spring Data JPA
私はそれが以下を呼び出すユースケースを持っています: @Override @Transactional(propagation=Propagation.REQUIRES_NEW) public UserControl getUserControlById(Integer id){ return this.userControlRepository.getOne(id); } 観察し@TransactionalているPropagation.REQUIRES_NEWとリポジトリの用途にgetoneを。アプリを実行すると、次のエラーメッセージが表示されます。 Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session ... しかし、私が変更した場合getOne(id)、findOne(id)すべて正常に動作します。 ところで、ユースケースがgetUserControlByIdメソッドを呼び出す直前に、それはすでにinsertUserControlメソッドを呼び出しています @Override @Transactional(propagation=Propagation.REQUIRES_NEW) public UserControl insertUserControl(UserControl userControl) { return this.userControlRepository.save(userControl); } 単純な監査制御を行っているため、どちらの方法もPropagation.REQUIRES_NEWです。 getOneメソッドはJpaRepositoryインターフェースで定義されており、Repositoryインターフェースはそこから拡張されているため、私はこのメソッドを使用しています。もちろん、JPAを使用しています。 JpaRepositoryインターフェースから延びCrudRepository。findOne(id)方法は、で定義されていますCrudRepository。 私の質問は: なぜgetOne(id)メソッドが失敗するのですか? いつgetOne(id)メソッドを使用する必要がありますか? 私は他のリポジトリを使用していますが、すべてこのgetOne(id)方法を使用しており、すべて正常に機能します。Propagation.REQUIRES_NEWを使用した場合にのみ失敗します。 getOne APIによると: 指定された識別子を持つエンティティへの参照を返します。 findOne APIによると: エンティティをIDで取得します。 3)いつfindOne(id)メソッドを使用する必要がありますか? …

14
特定の列を選択するSpring JPA
Spring JPAを使用してすべてのデータベース操作を実行しています。しかし、Spring JPAのテーブルから特定の列を選択する方法がわかりませんか? 例えば: SELECT projectId, projectName FROM projects

3
JPAとSpring Data JPAの違いは何ですか?
Spring Data-JPAとJPAの違いについて少し混乱しています。JPAについては、人気のORMテクノロジーを使用してJavaオブジェクトをリレーショナルデータベースに永続化するための仕様であることを知っています。 言い換えれば、JPAはインターフェースやその他のORMテクノロジーを提供し、JPAプロバイダー(Hibernateなど)として知られるインターフェースを実装します。 さて、Spring Data JPAとは正確には何ですか? Spring Data JPAはJPAを介していくつかの機能(インターフェース)を追加しましたが、それでも指定されているだけですか、それともJPAプロバイダーでもありますか? Spring Data JPAがリポジトリー(DAOレイヤー:私が間違っていない場合)を回避するのを見ました。つまり、「Spring Data JPA + Hibernate」を使用する場合と「Hibernate」指示のみを使用する場合とではどのように違うのでしょうか。

8
Spring Dataリポジトリをテストする方法は?
UserRepositorySpring Dataの助けを借りて作成されたリポジトリ(たとえば、)が必要です。私はspring-dataを初めて使用しますが(springは使用しません)、このチュートリアルを使用します。データベースを扱うための私のテクノロジーの選択は、JPA 2.1とHibernateです。問題は、そのようなリポジトリの単体テストを作成する方法について私が無知であることです。 create()メソッドを例にとってみましょう。私は最初にテストを行っているので、そのための単体テストを作成することになっています。そこで、3つの問題にぶつかります。 最初に、インターフェイスのEntityManager存在しない実装にモックを注入するにはどうすればよいUserRepositoryですか?Spring Dataはこのインターフェースに基づいた実装を生成します: public interface UserRepository extends CrudRepository&lt;User, Long&gt; {} ただし、EntityManagerモックや他のモックを使用するように強制する方法がわかりません。自分で実装を記述した場合、おそらくのセッターメソッドがありEntityManager、モックをユニットテストに使用できます。(実際のデータベース接続に関しては、およびのJpaConfiguration注釈が付けられたクラスが@Configurationあり@EnableJpaRepositories、プログラムDataSourceによってEntityManagerFactory、EntityManagerなどのBeanを定義していますが、リポジトリはテストに適しており、これらのものをオーバーライドできる必要があります)。 次に、相互作用をテストする必要がありますか?私はどのような方法を把握することは困難であるEntityManagerとQuery(それに似呼ばれるようになっているverify(entityManager).createNamedQuery(anyString()).getResultList();)、それは実装を書いている人は私ではないので、。 3番目に、Spring-Dataで生成されたメソッドを最初に単体テストする必要がありますか?私が知っているように、サードパーティのライブラリコードは単体テストではなく、開発者自身が作成したコードのみが単体テストされることになっています。しかし、それは本当ならば、それはまだシーンに最初の質問の背中をもたらします:言うが、私は実装を書くことになるための私のリポジトリ用のカスタムメソッドのカップルを、持って、どのように私は私のモック注入しないEntityManagerとQuery生成され、最終的にはリポジトリ? 注:統合テストと単体テストの両方を使用してリポジトリをテストします。統合テストではHSQLインメモリデータベースを使用していますが、単体テストではデータベースを使用していません。 そしておそらく4番目の質問は、統合テストで正しいオブジェクトグラフの作成とオブジェクトグラフの取得をテストすることは正しいですか(たとえば、Hibernateで定義された複雑なオブジェクトグラフがあるとします)。 更新:今日はモックインジェクションの実験を続けました-モックインジェクションを可能にする静的内部クラスを作成しました。 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration @Transactional @TransactionConfiguration(defaultRollback = true) public class UserRepositoryTest { @Configuration @EnableJpaRepositories(basePackages = "com.anything.repository") static class TestConfiguration { @Bean public EntityManagerFactory entityManagerFactory() { return mock(EntityManagerFactory.class); } @Bean public EntityManager entityManager() { …

2
SpringデータJPAのsaveとsaveAndFlushの違い
を介してCRUD操作をテストすることにより、Spring Data JPAを学習しようとしていJpaRepositoryます。 私は2つの方法に出くわしたsaveとsaveAndFlush。これら2つの違いはわかりません。呼び出すsaveと、私の変更はデータベースに保存されるので、の用途は何ですかsaveAndFlush。

3
Spring Data JPAは、大規模プロジェクトのHibernateとどう違うのですか?
新しいプロジェクトでHibernateを使い続けるべきか、それともJPAと新しいSpring Dataの実装で足を踏み入れるべきかを判断するのに苦労しています。 Spring Dataフレームワークは、大規模なプロジェクトを対象としていますか? @Query注釈を使用することによるコード削減の利点は確かにわかりますが、動的クエリに対して何をしますか?非常に複雑なsave()メソッドを実装する場合はどうでしょうか? ドキュメントには、メインリポジトリが実装するカスタムインターフェイスと実装を作成するように記載されていますが、クラッドリポジトリ自体のスーパーメソッドにアクセスする必要がある場合はどうでしょうか。crudリポジトリはカスタムのリポジトリを実装します-逆ではありません。奇妙なデザインのようです。 このフレームワークが複雑で大規模なアプリケーションの課題に対応できるかどうかは非常に不確かです。私はHibernateで多くの問題に遭遇したことがなく、Spring Data JPAを使用するのではなく、古き良き信頼性を維持することを検討しています。 私は何をすべきか?Spring Data JPAを使用すると、予期せぬ複雑さとコストが発生しますか?

8
Spring-Data-JPAアノテーションのsetMaxResults?
Spring-Data-JPAをプロジェクトに組み込もうとしています。私を混乱させる1つのことは、アノテーションによってsetMaxResults(n)をどのように実現するかです。 たとえば、私のコード: public interface UserRepository extends CrudRepository&lt;User , Long&gt; { @Query(value="From User u where u.otherObj = ?1 ") public User findByOhterObj(OtherObj otherObj); } one (and only one)otherObjからUser を返す必要があるだけですが、maxResultsに注釈を付ける方法が見つかりません。誰かが私にヒントを与えることはできますか? (mysqlは不平を言う: com.mysql.jdbc.JDBC4PreparedStatement@5add5415: select user0_.id as id100_, user0_.created as created100_ from User user0_ where user0_.id=2 limit ** NOT SPECIFIED ** WARN util.JDBCExceptionReporter - …

16
Spring Data JPA-「タイプのプロパティが見つかりません」例外
さて、私はグーグルを検索して多くの結果を見つけましたが、どれも私の問題に答えることができませんでした。だから、ここに行きます。 私はpinterest cloneの最小限の実装を行うことでSpring MVCとSpring Data JPAを研究しようとしています。だから、以下は私の問題に関連すると私が思うコードの部分です。 モデル/エンティティ @Entity @Table(name = "pin_item") public class PinItem implements Serializable { // properties ... @JoinColumn(name = "board_id", referencedColumnName = "user_board_id") @ManyToOne(optional = false) private UserBoard board; // getters and setters... } @Entity @Table(name = "user_board") public class UserBoard implements Serializable { // properties ... …

12
Spring Data JPAには、メソッド名解決を使用してエンティティをカウントする方法がありますか?
Spring Data JPAは、仕様を使用したエンティティのカウントをサポートしています。しかし、メソッド名解決を使用してエンティティをカウントする方法はありますか?特定の名前のエンティティをすべて取得countByNameするメソッドfindByNameと同様に、特定の名前のエンティティをカウントするメソッドが必要だとします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.