无法在spring jap存储库中添加自定义方法

时间:2016-06-16 09:23:25

标签: java spring repository

我的Spring JPA存储库工作正常,但我无法在其中创建自定义方法,就像以下是我的简单存储库

@Repository
public interface UserRepository extends CrudRepository<JPA_Users, Long> {

    List<JPA_Users> findByName(String Name);

}

然后在我的控制器类中我声明变量 CrudRepository存储库;

并将其实例化

ApplicationContext context = new ClassPathXmlApplicationContext("beans1.xml"); 
repository = context.getBean(UserRepository.class);

现在我期待通过使用repository.findByName我可以拥有它而我找不到

我正在阅读他们想要服务的许多文章,然后是它的实施,然后他们进行自动装配我没有得到任何想法。请指导我声明一个自定义JPA存储库方法

请注意,我有XML,其中jpaVendorAdapter EntityManagerFactory等被声明并按预期工作我有简单的存储库,我可以做CRUD

Shahzad

2 个答案:

答案 0 :(得分:0)

如果您已将beans1.xml连接到应用程序上下文,则在控制器中声明存储库,如下所示:

@Autowired
private UserRepository repository;

否则,在您的代码示例中,您应该声明您的&#34;存储库&#34;变量作为UserRepository的一个实例:

UserRepository repository = (UserRepository) context.getBean(UserRepository.class);

因为如果您将其声明为CrudRepository,则可以成功地转换父类,但丢失了接口的签名。

答案 1 :(得分:0)

LynxZh我的代码很简单我有存储库

@Repository
public interface UserRepository extends CrudRepository<JPA_Users, Long> {

    List<JPA_Users> findByName(String Name);

}

然后我有一个带有以下Request Mapped函数的控制器类

  @RequestMapping(value = "/jpadata1", method = RequestMethod.GET)
   public String jpadata1(ModelMap map) {        
        UserRepository repository;


        //Remember     beans1.xml is located in src/main/resources   folder    but 
        //load with just beans1.xml
        ApplicationContext context = new ClassPathXmlApplicationContext("beans1.xml"); 
        repository = context.getBean(UserRepository.class);

你可以看到我有我的存储库然后我调用了以下函数

Iterable usrs = repository.findByName(&#34; jpa data&#34;);

并期望所有名为shahzad的记录将返回但它不返回记录