当前位置: 首页 > 知识库问答 >
问题:

CustomRepository中的EntityManager与CRUDRepository抛出错误

易宣
2023-03-14

我正在尝试将customRepository与CRUDRepository一起使用。获取以下错误:

在JpaRepositoriesRegistrar上声明的@EnableJpaRepositories中定义的ConfigRepository。EnableJpaRepositoriesConfiguration:调用init方法失败;嵌套异常为org。springframework。数据存储库。查询QueryCreationException:无法为公共抽象java创建查询。lang.整数

原因:java。lang.IllegalArgumentException:未能为方法公共抽象java创建查询。lang.整数IConfigCustomRepository。refreshTable(java.lang.String,long)!至少提供了2个参数,但查询中仅存在1个参数。

至少提供了2个参数,但查询中仅存在1个参数。

在我的IConfigCustomRepository中,我有一个方法,其中我传递3个参数,2个参数来设置查询的参数,还有一个是String,它是需要执行的查询。

接口---IConfigCustomRepository。Java语言

public interface IConfigCustomRepository {

    Integer refreshTable(String queryText, long lastRefreshTime,  long currentTime);

}
public class ConfigCustomRepositoryImpl implements IConfigCustomRepository {

    @PersistenceContext
    EntityManager entityManager;

    @Override
    public Integer refreshTable(String queryText, long lastRefreshTime,  long currentTime) {
        return entityManager.createNativeQuery(queryText)
                .setParameter(1, lastRefreshTime)
                .setParameter(2, currentTime)
                .executeUpdate();
    }

}

我已经在ConfigRepository中扩展了它

@Repository
@Transactional
public interface ConfigRepository
        extends CrudRepository<ConfigTableData, String>, JpaSpecificationExecutor<ConfigTableData>,IConfigCustomRepository {

    @SuppressWarnings("unchecked")
    ConfigTableData save(ConfigTableData configData);

    Optional <ConfigTableData> findById(String string);

}

该方法在ReFresTableJ中调用ob.java

@Component
public class RefreshTableJob{

@Autowired
ConfigRepository configRepository;

public void execute(){

configRepository.refreshTable(queryText, lastRefreshTime, currentTime);

}

共有1个答案

司寇苗宣
2023-03-14

(获得额外评论后更新)

根据Spring数据存储库的Spring留档自定义实现

使用自定义界面扩展默认Spring CRUD存储库时:

interface UserRepositoryCustom {

  public void someCustomMethod(User user);
}


public interface UserRepository extends CrudRepository<User, Long>, UserRepositoryCustom {
    
      // Declare query methods here
    }

默认情况下,Spring尝试在名为

class UserRepositoryImpl implements UserRepositoryCustom {   
   public void someCustomMethod(User user) {
      // Your custom implementation
   }
}

看见配置:“如果使用命名空间配置,存储库基础结构将尝试通过扫描在其中找到存储库的包下面的类来自动检测自定义实现片段。这些类需要遵循命名约定,即将命名空间元素的repository impl后缀属性附加到片段接口名称。此后缀默认为impl。”

在您的情况下,实现类应命名为IConfigCustomRepositoryImpl

 类似资料:
  • 我使用Spring靴,希望提高性能。我必须下载数据库中有50000个字段的文件。使用hibernate。我在批量插入中找到了解决方案。但我不知道如何从Crudepository获得entitymanager 我创建了MyStorageService并想保存我的文件: } 如果在MyStorageService中使用 我明白了 错误[http-nio-18842-exec-1]JpaTransact

  • 我有这个Spring Data,它处理数据库上的CRUD操作。 是我数据库的User表的实体。向存储库添加以下操作: 如文档中所述,如果给定的id为null,则删除和查找操作会抛出,而保存操作不会抛出任何异常。 问题是Crudepository的javadoc没有提到这些操作引发的其他异常。例如,如果提供的ID在数据库中不存在,它不会告诉操作抛出。 在操作的javadoc中,不清楚在插入一个新用户

  • 在许多地方,我得到了几个已检查的异常,如IOException、ParseException、JSoneException等。我必须做出两个选择之一- > 通过在方法签名的末尾添加抛出来抛出相同的异常。 将检查的异常包装在RuntimeException(或一些自定义实现)中,然后抛出它,以便调用者不必在任何地方添加throws子句并检查异常。 在第一种情况下,我将不得不到处抛出,但我的客户可以通

  • 最终编辑:抱歉,我确信这篇文章很难理解,我正在为未来的子孙后代更新它。我从来没有弄清楚我的注释有什么问题,我最终放弃了,只是转而使用CrudRepository。 我们的存储库接口从Crudepository实现: 制作一个服务接口(不是必需的,但这是更好的实践): 使实现子类@Service: 这就是我的一个帖子集群,我仍然很好奇为什么我的不知何故没有被选中,但是我所有的endpoint都设置正

  • 这是一个简单的问题,但我不知道该怎么办。我正在使用JDK 8,现在无法使用var,那么应该如何声明该列表以避免出现该错误呢??请帮忙,谢谢你,祝福你 在此处输入图像描述

  • 因此,我使用服务器(google-app-engine)在客户端应用程序上进行身份验证。当我使用JavaFX、Webview或HttpsURLConnection时,一切都很好,它们连接起来了,但是当我使用HttpClient时,它会抛出以下错误 javax.net.ssl.sslpeerunverifiedexception:peer未在sun.security.ssl.sslsessionim