这个问题与自定义存储库实施
有关我创建了一个自定义存储库
public interface CustomTransactionRepo<TEntity> {
List<TEntity> basicSearch(String searchQuery, String searchColumn, Class<TEntity> collectionType);
}
其实施:
@Repository
public class CustomTransactionRepoImpl<TEntity> implements CustomTransactionRepo<TEntity> {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public List<TEntity> basicSearch(String searchQuery, String searchColumn, Class<TEntity> en) {
var query = new Query();
var criteria = new ArrayList<Criteria>();
if (StringUtils.isNotEmpty(searchQuery)) {
criteria.add(Criteria.where(searchColumn)
.regex(searchQuery, "i"));
}
query.addCriteria(new Criteria().andOperator(criteria.toArray(new Criteria[0])));
var simRecords = mongoTemplate.find(query, en);
return simRecords;
}
}
我有一个 BaseJPA 存储库,它扩展了我的 CustomRepo (CustomTransactionRepo) 和 MongoRepository
@NoRepositoryBean
public interface BaseJpaRepo<TEntity> extends CustomTransactionRepo<TEntity>, MongoRepository<TEntity, String> {
}
最后是 MyRepository (SimRecordRepository),只需要扩展 BaseJpaRepo
@Repository
public interface SimRecordRepository extends BaseJpaRepo<SimRecord> {
}
我从我的服务层调用这个存储库:
@Service
public class TransactionServiceImpl implements TransactionService {
@Autowired
private SimRecordRepository repo;
@Override
public List<SimRecord> basicSearch(String searchQuery, String searchColumn) {
return repo.basicSearch(searchQuery, searchColumn, SimRecord.class);
}
}
我的实体 SimRecord:
@Document(collection = "sim_record")
public class SimRecord {
private String id;
private String system;
private String entity;
@Field("business_ref")
private String businessRef;
private String recordSetId;
private Object payload;
private String payloadType;
private Object canonical;
private String canonicalType;
private String processingStatus;
private String recordStatus;
private String resultType;
private String classValue;
// Getters and Setters
现在运行构建时我遇到了异常:
org.springframework.data.mapping.PropertyReferenceException: No property 'basicSearch' found for type 'SimRecord'
我不确定还需要做什么。
注意 当我删除 BaseJpaRepo 并让 SimRecordRepository 直接扩展 CustomTransactionRepo 和 MongoRepository 时,我的应用程序运行良好。像这样:
@Repository
public interface SimRecordRepository extends MongoRepository<SimRecord, String>, CustomTransactionRepo<SimRecord> {
}
我期望的是我应该能够调用该方法
basicSarch()
但反而得到了propertyReference Exception