2017-01-15 13 views
2

這是我的代碼:如何刪除春CrudRepository選中轉換使用禁止標註旁邊

public interface UserRepo extends CrudRepository<User, Long> { 

    boolean exist(Long id); 

    @Override 
    User save(User user); 

} 

在Eclipse中,有返回類型的用戶發出警告。

描述資源路徑位置類型 類型安全:對於保存(用戶)離型UserRepo選中需要轉換從類型CrudRepository UserRepo.java

我可以符合S上的返回類型用戶知道

  1. ecplise警告返回類型未檢查轉換的原因是什麼?
  2. 什麼是擺脫警告的正確方法?

TQ

+5

您可以刪除保存方法。它沒有提供任何優勢,如果你這樣聲明它,它已經在CrudRepository中定義。 – dunni

+0

是的,您可以刪除該行和問題,但它不會回答爲什麼會生成此警告以及如何解決該問題。這也是我想了解的,以提高我對泛型的瞭解。 在您的repo界面中添加程序中實際使用的方法會很有用,因爲它提供了一種輕鬆查找對這些方法的所有調用的方法。 –

回答

0

由於@dunny在他的評論想通了,這個語句使界面沒有意義的,因爲它是在org.springframework.data.repository.CrudRepository.save(S)

已經實施

Eclipse給出了這個警告,因爲它不能知道,在這種情況下超級實現中的S是一個用戶。

爲了回答你的問題2,你可以做一個

@Override 
<S extends User> S save(S user); 

然後你擺脫的警告,但即使這樣,它不會更有意義提供這個簽名。

只是跳過這條語句,因爲它已經在那裏。

+0

您可能想要這樣做的一個原因是,如果要覆蓋save方法的默認'@ Transactional'行爲,比如設置一個非默認的'propagation' – Ben