我想通过添加一种方法来自定义 MongoRepository,并仍然使用 MongoRepository 提供的实现方法。下面是代码:
public interface TopoRepositoryInterface extends MongoRepository<Topo, String>
{
@Query("{'name':?0}")
public Topo findByName(String name);
public long getPublishedTopoCount();
}
实施声明是:
public class TopoRepositoryImpl extends SimpleMongoRepository<Topo, String> implements TopoRepositoryInterface
如果不进行自定义,可以通过添加 @Query("{'name':?0}") 注解来自动实现 TopoRepositoryInterface 中声明的 findByName 方法。但现在,既然有接口继承,我必须添加代码
@Override
public Topo findByName(String name)
{
Topo topo = getMongoOperations().findOne(Query.query(Criteria.where("name").is(name)), Topo.class);
return topo;
}
有没有办法只为 getPublishedTopoCount() 编写自己的代码,而让 findByName() 由 @Query 注释实现?非常感谢。
您必须将存储库界面分成两个。
第一个 - 包含您手动实现的方法的“自定义”将是:
public interface TopRepositoryCustom {
long getPublishedTopoCount();
}
第二个是生成方法:
public interface TopRepository extends MongoRepository<Topo, String>, TopRepositoryCustom {
@Query("{'name':?0}")
Topo findByName(String name);
}
然后您只需要实现第一个存储库并记住遵循正确的命名约定。更多信息请访问:spring-data mongodb自定义实现PropertyReferenceException https://stackoverflow.com/questions/17035419/spring-data-mongodb-custom-implementation-propertyreferenceexception and Spring Data MongoDB 自定义实现参考 http://static.springsource.org/spring-data/data-document/docs/current/reference/html/#repositories.custom-implementations
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)