JPA中JpaRepository接口的使用方式
JPA JpaRepository接口的使用
SpringData的所有接口
CrudRepository接口 ,其中提供瞭這些方法提供使用,同時繼承瞭其父接口的方法
其中saveAndFlush()方法就相當於hibernate中的saveOrUpdate()和JPA中的merge()
@Test public void JpaRepository() { Person person = new Person(); person.setId(27); person.setName("ab"); person.setAge(22); person.setEmail("[email protected]"); //該方法就相當於hibernate中的saveOrUpdate()和JPA中的merge() personRepositoiry.saveAndFlush(person); }
該接口提供瞭JPA的相關功能
List<T> findAll(); //查找所有實體 List<T> findAll(Sort sort); //排序、查找所有實體 List<T> save(Iterable<? extends T> entities);//保存集合 void flush();//執行緩存與數據庫同步 T saveAndFlush(T entity);//強制執行持久化 void deleteInBatch(Iterable<T> entities);//刪除一個實體集合
Jpa Repository繼承自定義接口的主意事項
今天翻看別人寫的項目,看到大神在Repository的接口裡又繼承瞭一個自定義接口,覺得這樣寫挺好,後面註入還是用原來Repository,然後我就把當下自己手裡項目也改瞭改,結果啟動報錯,錯誤信息大致如下。
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘TestService’: Unsatisfied dependency expressed through field ‘repository’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘TestRepository’: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query method public abstract void net.csdn.repository.Test.batchSave(java.util.List)! No property batchSave found for type TestEntity!
整體代碼如下
1.自定義接口
public interface Test{ public void batchSave(List<TestEntity> list); }
2.創建一個接口,該接口 extends JpaRepository 或者 CurdRepository, 以及上面自己定義的接口 Test
public interface TestRepository extends CrudRepository<TestEntity, Integer>, Test{ }
3.實現TestCustom自定義接口,類名我自然而然寫成TestService此類的
public class TestService implements Test{ public void batchSave(List<TestEntity> list){ //..... } }
解決方案
自定義接口的實現類名是有要求的,必須以 2 中創建的接口的名字TestRepository加上 Impl 來聲明,例如
public class TestRepositoryImpl implements Test{ public void batchSave(List<TestEntity> list){ //..... } }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 如何為Repository添加自定義方法
- spring data jpa如何使用自定義repository實現類
- 基於JPA的Repository使用詳解
- SpringData如何通過@Query註解支持JPA語句和原生SQL語句
- spring data jpa 創建方法名進行簡單查詢方式