java - 使用 Spring Data JPA 接口(interface)在 Intellij 中进行不明确的方法调用

标签 java intellij-idea spring-data-jpa intellij-14

intellij 报告了一个奇怪的模棱两可的方法调用错误。我正在使用一个 spring 数据 JPA 接口(interface),它也实现了一个具有相同方法签名的接口(interface):

用户资料库:

@Repository
public interface UserRepository extends CrudRepository<User, String>, UserProvider {
} 

用户提供者:

public interface UserProvider {
    User findOne(String userId);
}

除了需要第二个接口(interface)的原因,我假设因为这些是接口(interface)并且 findOne 的方法签名是相同的,所以编译器可以毫无问题地处理歧义。我对 Java 的理解不正确,还是这是一个 intellij 问题?这是通过泛型解析的 CrudRepository 接口(interface)的问题吗?

最佳答案

我遇到过同样的问题。在我的例子中,我的 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 {
}

关于java - 使用 Spring Data JPA 接口(interface)在 Intellij 中进行不明确的方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34777596/

相关文章:

java NoClassDefFoundError : com/google/api/client/extensions/java6/auth/oauth2/VerificationCodeReceiver when I run jar but not on IDE

java - SpringMVC + Hibernate Tomcat 500,json 无堆栈跟踪

java - StringBuffer 如何在不创建两个对象的情况下实现 append 功能?

java - Scanner next() - 如何替换换行符 [java]

java - IntelliJ 2017 中没有代码覆盖率

java - JdbcSQLIntegrityConstraintViolationException : NULL not allowed for column

java - Maven Javadoc 插件 - 覆盖默认 CSS 的特定部分

java - IntelliJ : types of entities to be added to the project

jpa - NULL ID 通过 @GeneratedValue 在复合键上使用 @EmbeddedId 生成

jpa - 避免在 Spring Data Jpa 中加载 LAZY 集合