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

Spring共享自定义存储库声明未找到sharedCustomMethod的属性

孟昊空
2023-03-14

我正在遵循Spring手册为我的所有子存储库创建一个共享存储库,以在查询中提供更多功能

然而,我得到的是“没有发现任何属性异常”基本上,我遵循步骤1.3.2,从该链接向所有存储库添加自定义行为http://docs.spring.io/spring-data/data-commons/docs/1.6.1.RELEASE/reference/html/repositories.html

我试图更改名称和回购协议中的所有内容,但运气不好。

这是我的代码:

界面

package com.ang.repository.common;

@NoRepositoryBean
public interface BaseRepositoryCustom<T, ID extends Serializable> extends     JpaRepository<T, ID>, QueryDslPredicateExecutor<T>, JpaSpecificationExecutor<T>  {
    void sharedCustomMethod(ID id);
    //Page<T> findAll(String relationship, Pageable paging);
}

实现

package com.ang.repository.common;

public class BaseRepositoryCustomImpl<T, ID extends Serializable> 
        extends QueryDslJpaRepository<T, ID>
        implements BaseRepositoryCustom<T, ID> {

    public BaseRepositoryCustomImpl(JpaEntityInformation<T, ID> entityInformation, EntityManager entityManager) {
        super(entityInformation, entityManager);
    }

    public void sharedCustomMethod(ID id) {
        // implementation goes here
    }

    @Override
    public Page<T> readPage(TypedQuery<T> query, Pageable pageable, Specification<T> spec) {
        return super.readPage(query, pageable, spec);
    }

//  @Override
//  public Page<T> findAll(String relationship, Pageable paging) {
//      return null;
//  }

}

第一个存储库

package com.ang.repository.core;

@RepositoryRestResource(collectionResourceRel = "alndomain", path = "alndomain")
@CrossOrigin(maxAge = 3600)
@Repository("customAlnDomainRepository")
public interface AlnDomainRepository extends BaseRepositoryCustom<AlnDomain, Long>{
    @Query(value="select * from #{#entityName} e where e.alnName = ?1",nativeQuery=true)
    List<AlnDomain> findAllByAlnDomain(String alnDomain);

    @Query(value="select * from #{#entityName} e where e.alnName = ?1 and e.name = ?2",nativeQuery=true)
    AlnDomain findOneByAlnDomainName(String alnDomain,String name);
}

例外:

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property sharedCustomMethod found for type AlnDomain!

我试图从命名约定中删除“自定义”,但没有成功。

溶液

步骤1.3.2(第4节)中的工厂bean设置不正确。调试后,我发现Spring没有将该方法识别为自定义方法。

我在我的主Spring应用程序类中添加了以下注释:

@EnableJpaRepositories(repositoryFactoryBeanClass=com.ang.repository.common.BaseRepositoryFactoryBean.class)

一切正常。

谢谢大家。

共有2个答案

帅雅逸
2023-03-14

溶液

步骤1.3.2(第4节)中的工厂bean没有正确实例化。调试后,我发现Spring没有将该方法识别为自定义方法。Spring的RepositoryFactorySupport没有实例化自定义工厂Bean。

我在我的主Spring应用程序类中添加了以下注释:

@EnableJpaRepositories(repositoryFactoryBeanClass=com.ang.repository.common.BaseRepositoryFactoryBean.class)

一切正常。

谢谢大家。

韦智刚
2023-03-14

基本存储库实现的名称应为BaseRepositoryImpl,而不是BaseRepositoryCustomImpl:

public class BaseRepositoryImpl<T, ID extends Serializable> 
        extends QueryDslJpaRepository<T, ID>
        implements BaseRepositoryCustom<T, ID> {

    public BaseRepositoryCustomImpl(JpaEntityInformation<T, ID> entityInformation, EntityManager entityManager) {
        super(entityInformation, entityManager);
    }

    public void sharedCustomMethod(ID id) {
        // implementation goes here
    }

    @Override
    public Page<T> readPage(TypedQuery<T> query, Pageable pageable, Specification<T> spec) {
        return super.readPage(query, pageable, spec);
    }
}
 类似资料:
  • 我试图实现一个自定义Spring存储库。我有接口: 实施: 和“主”存储库,扩展我的自定义存储库: 我使用的是Spring Boot,根据文档: 默认情况下,Spring Boot将启用JPA存储库支持,并查看@SpringBootApplication所在的包(及其子包)。 当我运行应用程序时,出现以下错误: 组织。springframework。数据映射。PropertyReferenceEx

  • 我有通用的基本存储库定义如下: 我的ICustomRepostory存储库接口定义如下: 现在当我使用基本存储库时: 当我在我的服务类中自动连线 OrdeRepository 时,它给了我编译错误: 引起:org.springframework.beans.factory.BeanCreationExc的:错误创建bean的名称'OrderRepostion'定义abc.example.在@Ena

  • 我是Spring Data JPA的新手。我试图为存储库创建一个自定义方法,但是它确实抛出了一个异常。以下是我目前的实现: 这是我启动应用程序时发生的异常(我正在使用 Spring 启动)。

  • 问题内容: 两个共享库liba.so和libb.so。liba.so使用libb.so。所有c文件都使用-fPIC编译。链接使用- shared。当我们在liba.so上调用dlopen时,它无法在libb.so中找到符号…我们得到“未定义符号”错误。我们可以dlopen libb.so没有错误。我们知道liba正在找到libb,因为我们没有得到文件未找到错误。删除libb.so时,出现文件未找到

  • 您需要创建一个通用的JpaRepository,以便处理系统进行的所有事务。在这里遵循这个示例。 它与实现有点不同,因为我的目标不是执行搜索,而是操作save方法。 unsatisfiedDependencyException:创建名为“sistema menuservice”的bean时出错:通过字段“sistema menurepository”表示未满足的依赖关系;嵌套异常是org.spri