假设我有两个模型,对于每个模型,我都有一个JPA存储库接口,如下所示:
public interface IPersonJPARepository extends JpaRepository<Person, Long> {
.....
}
public interface ICountryJPARepository extends JpaRepository<Country, Long> {
.....
}
然后我想为每个模型都有一个DAL类,在那里我可以使用ORM方法进行CRUD。例子:
@Repository
public class PersonDal implements IPersonDal {
@Autowired
IPersonRepository repo;
@Override
public List<Person> getAll() {
return repo.findAll();
}
}
@Repository
public class CountryDal implements ICountryDal {
@Autowired
ICountryRepository repo;
@Override
public List<Country> getAll() {
return repo.findAll();
}
}
然后问题发生在启动Sonarqube来分析我的代码时,因为Sonarqube看到在两个getAll()方法中,我使用同一行来获取特定模型的所有对象。我的问题是索纳库贝问题的解决方案是什么?
遵循变量命名约定。变量名可以是有代表性的名词,而不是一般的词。在您的情况下,更改如下:
@Autowired
ICountryRepository countryRepository; // or countryRepo
和
@Autowired
IPersonRepository personRepository; // or personRepo
如果你真的有一个重复的代码,把它复制到一个接口或超类中,并使用继承来扩展/实现父类。