我使用Spring data jpa,并尝试按照此处描述的方式向所有仓库添加自定义行为:
http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/#repositories.custom-behaviour-for-all-repositories
我遇到了几个问题:
首先,在Spring文档中描述的RepositoryMetadata类中不存在getDomainClass方法,如下所示:
我使用了以下方法:getDomainType()。这样做正确吗?
其次,我的应用程序在tomcat启动时抛出异常。以下是完整的堆栈跟踪:
我在网上找不到其他示例。请问有人能帮忙吗?
首先,在Spring文档中描述的RepositoryMetadata类中不存在getDomainClass方法,如下所示:
protected Object getTargetRepository(RepositoryMetadata metadata) {
return new MyRepositoryImpl<T, I>((Class<T>) metadata.getDomainClass(), entityManager);
}
我使用了以下方法:getDomainType()。这样做正确吗?
其次,我的应用程序在tomcat启动时抛出异常。以下是完整的堆栈跟踪:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'globalRepositoryImpl' defined in file [E:\users\jumartin\dev_sts\.metadata\.plugins\org.eclipse.wst.server.core\
tmp0\wtpwebapps\SuiviTRC\WEB-INF\classes\trc\suivi\repository\GlobalRepositoryImpl.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could
not instantiate bean class [trc.suivi.repository.GlobalRepositoryImpl]: No default constructor found; nested exception is java.lang.NoSuchMethodException: trc.suivi.repository.GlobalRepositoryImpl.<i
nit>()
这是我自定义的全局存储库代码:
public class GlobalRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRepository<T, ID> implements GlobalRepository<T, ID> {
private EntityManager em;
public GlobalRepositoryImpl(Class<T> domainClass, EntityManager em) {
super(domainClass, em);
this.em = em;
}
public void sharedCustomMethod(ID id) {
}
}
这是我的XML配置:
<repositories base-package="trc.suivi.repository" factory-class="trc.suivi.repository.GlobalRepositoryFactoryBean">
<repository id="pliRepository" />
<repository id="globalRepository" />
</repositories>
我在网上找不到其他示例。请问有人能帮忙吗?