我已经搜索过很多次关于如何在春季启动中访问实体管理器的信息,并且按照帖子中的说明进行了操作,但是没有用。我想访问实体管理器,以便可以执行一些自定义查询操作。在这里,我在名为“ customrepository”的依赖包中定义了自定义接口:
public interface PostRepositoryCustom {
void refresh(Post post);
}
然后,我在另一个名为“ customrepositoryimpl”的程序包中实现了此接口:
public class CustomPostRepositoryImpl implements PostRepositoryCustom {
@PersistenceContext
private EntityManager em;
@Override
public void refresh(Post post) {
em.refresh(post);
}
}
最后,我定义了一个标准存储库接口,该接口扩展了'CrudRepository'和自定义存储库:
public interface PostRepository extends CrudRepository<Post,Long>,PostRepositoryCustom {}
我执行的所有步骤都经过谷歌搜索和官方文档,但是当我运行我的应用程序时,我得到了:
Error creating bean with name 'postRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract void com.example.demo.customrepository.PostRepositoryCustom.refresh(com.example.demo.model.Post)! No property refresh found for type Post!
为什么?有人告诉我应该在哪里纠正我的错误吗?
答案 0 :(得分:0)
Spring无法找到Bean,因此请尝试使用@Repository进行注释
@Repository
public class CustomPostRepositoryImpl implements PostRepositoryCustom {
@PersistenceContext
private EntityManager em;
@Override
public void refresh(Post post) {
em.refresh(post);
}
}
和
@Repository
public interface PostRepository extends CrudRepository<Post,Long>{
}