Chr*_*ong 12 spring spring-data spring-data-mongodb
我正在尝试根据参考4.4自定义实现实现自定义查询:
Spring Data的MongoTemplate和MongoRepository有什么区别?
我这样做是因为我需要使用mongoTemplate进行特殊查询.
我得到的错误是一个PropertyReferenceException.所以spring-data似乎试图自动生成我不想要的查询.我想使用自己的自定义查询.
org.springframework.data.mapping.PropertyReferenceException: No property search found for type com.eerra.core.common.dto.User
Run Code Online (Sandbox Code Playgroud)
这里也描述了这个问题,但解决方案对我来说似乎不起作用:
http://forum.springsource.org/showthread.php?114454-Custom-repository-functionality
题
如果没有spring-data尝试自动生成查询,如何实现自定义查询接口和实现?
组态
弹簧配置
弹簧data.xml中
<!-- Spring Data MongoDB repository support -->
<mongo:repositories base-package="com.eerra.*.common.service" />
Run Code Online (Sandbox Code Playgroud)
存储库类和接口位于以下包中:
com.eerra.core.common.service.UserRepositoryInterface.java com.eerra.core.common.service.UserRepoistoryCustom.java(interface)com.eerra.core.common.service.UserRepositoryCustomImpl.java(implementation)
UserRepositoryCustom.java
public interface UserRepositoryCustom {
List<User> searchAllUsers();
}
Run Code Online (Sandbox Code Playgroud)
UserRepositoryCustomImpl.java
public class UserRepositoryCustomImpl implements UserRepositoryCustom {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public List<User> searchAllUsers() {
return mongoTemplate.findAll(User.class);
}
}
Run Code Online (Sandbox Code Playgroud)
UserRepositoryInterface.java
@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String>, UserRepositoryCustom {
User findByEmail(String email);
List<User> findByEmailLike(String email);
List<User> findByEmailOrLastName(String email, String lastName);
List<User> findByEmailOrFirstNameLike(String email, String firstName);
@Query("{\"$or\" : [ { \"email\" : { \"$regex\" : ?0, \"$options\" : \"i\"}} , " +
"{ \"firstName\" : { \"$regex\" : ?0, \"$options\" : \"i\"}}, " +
"{ \"lastName\" : { \"$regex\" : ?0, \"$options\" : \"i\"}}]}")
List<User> findByEmailOrFirstNameOrLastNameLike(String searchText);
}
Run Code Online (Sandbox Code Playgroud)
Chr*_*ong 26
问题已经解决了.当Impl类命名不正确时,会出现此错误.必须根据存储库类命名Impl类.因此,此示例必须遵循以下名称:
请参阅答案: Spring Data的MongoTemplate和MongoRepository有什么区别?
| 归档时间: |
|
| 查看次数: |
14064 次 |
| 最近记录: |