1

我正在尝试使用 micronaut 中的可组合存储库来实现一种方法。

我有:

@Repository
public interface EmployeeRepository extends CrudRepository<Employee, Long>, EmployeeRepositoryCustom {
}

这里,EmployeeRepositoryCustom 是一个带有方法“list()”的接口:

public interface EmployeeRepositoryCustom {
    List<Employee> list();
}

然后我有实现接口方法的 EmployeeRepositoryCustomImpl 类:

public class EmployeeRepositoryCustomImpl implements EmployeeRepositoryCustom {
    @PersistenceContext
    EntityManager em;

    @Override
    @Transactional
    public List<Employee> list() {

       // implementation code
    }
}

当我使用以下方法调用该方法时:

@Inject

EmployeeRepository employeeRepository;

public List<Employee> get(){
     return employeeRepository.list();
}

我收到以下消息:

java.lang.IllegalStateException: Micronaut Data method is missing compilation time query information. Ensure that the Micronaut Data annotation processors are declared in your build and try again with a clean re-build. 


我尝试在 EmployeeRepositoryCustom 和 EmployeeRepositoryCustomImpl 上添加注释 @Repository,但它仍然给出相同的错误消息。有没有办法做到这一点?

我知道我可以只注入 EmployeeRepositoryCustom 类并访问该方法,但我想使用可组合存储库方法来做到这一点。因为,员工存储库来自另一个模式(不是默认数据源,而是另一个数据源),我希望能够指定如下模式:

@Repository("schema2")
4

1 回答 1

1

您不应该创建接口的实现。如果您想使用自己的代码创建方法,您可以将存储库创建为抽象类,并将您希望为您实现的方法保留为抽象,然后您可以创建任何具体方法。

于 2020-02-27T05:55:06.337 回答