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