我的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
答案 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的记录将返回但它不返回记录