【发布时间】:2016-06-16 09:23:24
【问题描述】:
我的 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
沙赫扎德
【问题讨论】:
-
请不要告诉我您实际上是在再次创建上下文实例来检索依赖项?除非你想要奇怪的内存、事务、并发问题,否则使用依赖注入。
-
您需要将变量声明为 UserRepository 存储库而不是 CrudRepository 存储库。正如 M. Deinum 所提到的,您只需要创建一个包含所有 bean 的上下文 - 存储库、控制器和您需要的任何其他内容(而不是在控制器中创建上下文)。
-
Michal 感谢您指出我的错误 User Repository 工作,现在该对象具有 findByName 函数但现在我有更多问题,请注意我在存储库中声明函数为 List
findByName(String Name);我进行了以下调用 Iterable usrs = repository.findByName("shahzad");我期待记录列表将被返回。我有多个带有 Shahzad 名称列 M.Deinum 的记录,我在 spring 和 java 中有点新,通常我只是按照分步说明进行操作,请你给我更多的教育 -
对于您的第二个问题,您能否也粘贴 JPA_Users 类?
标签: java spring repository