2016-06-16 32 views
0

這是我UserRepository和查找功能今年春天數據查詢工作不

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

    List<JPA_Users> findByName(String Name); 

} 

然後在控制器的功能之一,我嘗試訪問此發現的功能如下

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


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


     Iterable usrs = repository.findByName("shahzad"); 

} 

有列名與數據庫中的名稱,我有多個記錄與值shahzad我期待所有這些記錄將返回,但此函數不返回任何記錄沒有返回

Shahzad

+2

坦率地說,您真的需要回到基礎知識並學習基本概念。Behing Spring:什麼是上下文,什麼是依賴注入等。從Spring bean重新創建一個新的上下文,然後查找存儲庫這個新的背景是完全錯誤的。 –

回答

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

您正在爲每個請求創建一個新的上下文,這是一個非常錯誤的策略。

作爲第一次更正,不要在您的控制器中創建新的上下文,您應該使用依賴注入。

@Autorwired 
private UserRepository userRepository; 
@RequestMapping(value = "/jpadata1", method = RequestMethod.GET) 
public String jpadata1(ModelMap map) {   
    Iterable usrs = userRepository.findByName("shahzad"); 
} 
+0

是的感謝您的建議,新的春天,真的這是我發現我用ApplicationContext做了一件可怕的事情,並通過基礎知識。謝謝你們指出這一點。但是,請你回答我原來的問題,爲什麼我沒有獲得記錄? –

+0

可能有很多原因,也許你想在github上發佈你的項目? –

0

轉到JPA_Users類,如果你正在使用日食爲IDE,然後鍵入大綱和檢查什麼是字段名稱/姓名你有什麼都吸氣值 pojo類。

在存儲庫層嘗試這下面註釋也:

org.springframework.transaction.annotation.Transactional 
@Transactional 

除了檢查你的POJO類主ID類型長與否。