Rya*_*ney 9 java mongodb spring-data spring-data-document
基于Spring Data Document文档,我提供了一个存储库方法的自定义实现.自定义方法的名称是指域对象中不存在的属性:
@Document
public class User {
String username;
}
public interface UserRepositoryCustom {
public User findByNonExistentProperty(String arg);
}
public class UserRepositoryCustomImpl implements UserRepositoryCustom {
@Override
public User findByNonExistentProperty(String arg) {
return /*perform query*/;
}
}
public interface UserRepository
extends CrudRepository<?, ?>, UserRepositoryCustom {
public User findByUsername(String username);
}
Run Code Online (Sandbox Code Playgroud)
但是,也许是因为我选择了方法名称(findByNonExistentPropertyName
),Spring Data尝试解析方法名称,并从中创建查询.当它找不到nonExistentProperty
时User
,会抛出异常.
可能的决议:
谢谢!
Oli*_*ohm 10
UserRepositoryImpl
当我们尝试根据找到的Spring Data存储库接口的名称查找它时,必须命名您的实现类(如果您坚持使用默认配置).我们从这个开始的原因是我们无法可靠地知道您扩展的哪个接口是具有自定义实现的接口.鉴于这样的情况
public interface UserRepository extends CrudRepository<User, BigInteger>,
QueryDslPredicateExecutor<User>, UserRepositoryCustom { … }
Run Code Online (Sandbox Code Playgroud)
我们不得不以某种方式硬编码接口,不检查自定义实现类,以防止意外接收.
所以我们通常建议提出一个命名约定,让我们说Custom
接口的后缀包含手动实现的方法.然后,您可以CustomImpl
使用元素的repository-impl-postfix
属性设置存储库基础结构,以使用as后缀来获取实现类repositories
:
<mongo:repositories base-package="com.acme"
repository-impl-postfix="CustomImpl" />
Run Code Online (Sandbox Code Playgroud)
参考文档中有关于此的更多信息,但似乎您至少已经对此进行了简要检查.:)
归档时间: |
|
查看次数: |
3101 次 |
最近记录: |