使用 Spring Data JPA 接口在 Intellij 中调用不明确的方法

Jpn*_*pnh 5 java intellij-idea spring-data-jpa intellij-14

intellij 报告了一个奇怪的模棱两可的方法调用错误。我正在使用 spring data JPA 接口,该接口还实现了具有相同方法签名的接口:

用户存储库:

@Repository
public interface UserRepository extends CrudRepository<User, String>, UserProvider {
} 
Run Code Online (Sandbox Code Playgroud)

用户提供者:

public interface UserProvider {
    User findOne(String userId);
}
Run Code Online (Sandbox Code Playgroud)

除了需要第二个接口的原因之外,我假设由于这些接口和 findOne 的方法签名是相同的,所以编译器在处理歧义时不会有问题。是我对Java的理解不正确,还是intellij的问题?这是通过泛型解决的 CrudRepository 接口的问题吗?

小智 4

我也遇到过同样的问题。就我而言,我的 IDE (Eclipse) 没有报告错误,但是当从控制台通过 Maven 构建项目时,我在 testCompile 期间收到了有关方法模糊性的错误。

我怀疑这与 Eclipse 和 Maven 使用的不同 Java 编译器有关,但即使我验证它们都使用相同的 JDK (jdk1.8.0_91),问题仍然存在。

然而,在花了几个小时之后,我通过使用 @RepositoryDe​​finition 注释我的存储库而不是从 CrudRepository 扩展它来克服了这个问题。使用您的示例,它将是:

@RepositoryDefinition(domainClass = User.class, idClass = String.class)
public interface UserRepository extends UserProvider {
}
Run Code Online (Sandbox Code Playgroud)