Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
org.springframework.data.mapping.PropertyReferenceException:找不到类型的属性捕获_Spring_Spring Data - Fatal编程技术网

org.springframework.data.mapping.PropertyReferenceException:找不到类型的属性捕获

org.springframework.data.mapping.PropertyReferenceException:找不到类型的属性捕获,spring,spring-data,Spring,Spring Data,我对Spring数据存储库有一个问题 当我部署时,我得到一个异常,这是因为Spring数据试图动态地派生方法,但在实体中找不到相应的属性 如果没有此问题,如何将自定义方法放入自定义存储库中 这些是涉及的组成部分: LocaleJpaImpl:实体 LocaleJpaRepositoryClient:业务层类 接口LocaleJpaRepository扩展了JpaRepository、LocaleJpaRepositoryCustom interface LocaleJpaRepositoryCu

我对Spring数据存储库有一个问题

当我部署时,我得到一个异常,这是因为Spring数据试图动态地派生方法,但在实体中找不到相应的属性

如果没有此问题,如何将自定义方法放入自定义存储库中

这些是涉及的组成部分:

  • LocaleJpaImpl
    :实体
  • LocaleJpaRepositoryClient
    :业务层类
  • 接口LocaleJpaRepository扩展了JpaRepository、LocaleJpaRepositoryCustom
  • interface LocaleJpaRepositoryCustom
  • LocaleJpaRepositoryImplemented实现LocaleJpaRepositoryCustom
  • LocaleJpaRepositoryCustom
    有一个方法:

    List<String> catchLanguagesCombinations() throws DAOSystemException;
    
    3。接口LocaleJpaRepository

    import java.util.List;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.data.jpa.repository.Query;
    import org.springframework.data.repository.query.Param;
    import com.engine.i18n.domain.LocaleJpaImpl;
    
    public interface LocaleJpaRepository extends JpaRepository<LocaleJpaImpl, Long>, LocaleJpaRepositoryCustom {
    
        @Query("FROM LocaleJpaImpl L WHERE L.languageCode = :languageCode")
        List<LocaleJpaImpl> findLocaleByLanguageCode(@Param("languageCode") String languageCode);   
    
    }
    
    import java.util.List;
    导入org.springframework.data.jpa.repository.JpaRepository;
    导入org.springframework.data.jpa.repository.Query;
    导入org.springframework.data.repository.query.Param;
    导入com.engine.i18n.domain.LocaleJpaImpl;
    公共接口LocaleJpaRepository扩展了JpaRepository、LocaleJpaRepositoryCustom{
    @查询(“来自localejbaimpl,其中L.languageCode=:languageCode”)
    列出findLocaleByLanguageCode(@Param(“languageCode”)字符串languageCode);
    }
    
    4。接口LocaleJpaRepositoryCustom

    import java.util.List;
    import com.util.DAOSystemException;
    
    public interface LocaleJpaRepositoryCustom {
    
        List<String> catchLanguagesCombinations() throws DAOSystemException;
    }
    
    import java.util.List;
    导入com.util.DAOSystemException;
    公共接口LocaleJpaRepositoryCustom{
    List CatchLanguagesCompositions()引发系统异常;
    }
    
    5。已实施本地ejbarepository

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Locale;
    
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;
    
    import com.util.DAOSystemException;
    
    public class LocaleJpaRepositoryImplemented implements LocaleJpaRepositoryCustom {
    
        @PersistenceContext(unitName = "contentEntityManagerFactory")
        private EntityManager em;
    
        @SuppressWarnings("unchecked")
        @Override
        public List<String> catchLanguagesCombinations() throws DAOSystemException {
    
            return "result";
        }
    }
    
    import java.util.ArrayList;
    导入java.util.Collections;
    导入java.util.List;
    导入java.util.Locale;
    导入javax.persistence.EntityManager;
    导入javax.persistence.PersistenceContext;
    导入javax.persistence.Query;
    导入com.util.DAOSystemException;
    实现的公共类LocaleJpaRepositoryImplemented实现LocaleJpaRepositoryCustom{
    @PersistenceContext(unitName=“contentEntityManagerFactory”)
    私人实体管理者;
    @抑制警告(“未选中”)
    @凌驾
    公共列表捕获语言组合()引发DAOSystemException{
    返回“结果”;
    }
    }
    
    我遇到了这样的问题,我的错误是自定义存储库类的名称:

    如果jpa存储库接口的名称为
    LocalEJBarepository
    ,则新的自定义接口应命名为
    LocalEJBarepositoryCustom
    ,但在方法中进行重写的类必须命名为
    LocalEJBarepositoryImpl
    ,如下所示:

    public class LocalJpaRepositoryImpl implements LocalJpaRepositoryCustom{
    @Override
       public void customMethod(){....}
    }
    

    基本上,自定义接口的实现类应该以存储库接口的名称(JPARepository)开始,以“Impl”关键字结尾。

    自定义存储库实现类名称应该是接口名称,它是用Impl扩展JPARepository的接口名称。

    @Param(“countryCode”)
    应该是
    @Param(“languageCode”)
    @Abhinav Sarkar:谢谢!这是一个错误。:)无论如何不是异常的原因。:(您是对的:实现RepositoryCustom接口的类有一个错误的名称LocaleJpaRepositoryImpl,它应该是按照Spring数据约定实现的LocaleJpaRepositoryImpl。修改类名解决了这个问题。非常感谢!我正在做同样的事情,但我有一个错误。它正在理解自定义接口。)hod正在创建为实体存储库的字段。原因:org.springframework.data.mapping.PropertyReferenceException:找不到类型“Entity”的属性“METHODNAME”!你知道吗?使用
    @Query
    注释重命名方法。它们不应该像普通的“findAll”。。。"etcThanks@koitor您保存的dit应该注意,根据Spring文档,您的类名应该是
    LocalJpaRepositoryCustomImpl
    而不是
    LocalJpaRepositoryImpl
    。但是只有将其命名为LocalJpaRepositoryImpl才能使其工作,因此这意味着在这方面是错误的。引用:
    classcustomizedUserRepositoryimpl实现s CustomizedUserRepository{
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Locale;
    
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;
    
    import com.util.DAOSystemException;
    
    public class LocaleJpaRepositoryImplemented implements LocaleJpaRepositoryCustom {
    
        @PersistenceContext(unitName = "contentEntityManagerFactory")
        private EntityManager em;
    
        @SuppressWarnings("unchecked")
        @Override
        public List<String> catchLanguagesCombinations() throws DAOSystemException {
    
            return "result";
        }
    }
    
    public class LocalJpaRepositoryImpl implements LocalJpaRepositoryCustom{
    @Override
       public void customMethod(){....}
    }