多个数据库配置其实很简单,主要是看是否需要全局事务,EJB这种分布式的架构本身就有JTA的概念,不过在Hibernate里面还是需要依赖外部JTA实现,有两种选择,一种是依赖支持JTA的容器,例如jboss,glassfish等,还有一种是使用开源的jta实现,例如Atomikos,jotm等,个人建议你不要依赖容器。
给你一个参考地址
>
如果我们想拓展spring data jpa的CrudRepository或PagingAndSortingRepository,加入我们自己的database *** 作。分3个级别的拓展:
1、继承CrudRepository或PagingAndSortingRepository,在继承的就扣定义findBy类似的方法。这种方式只能做到最简单的拓展,毕竟一个方法名能表达的意思有限,(就好比我们说一句话能表达的意思也很有限)。
2、使用@Query注解继承接口里面的方法,定义方法要执行的sql,注意方法的每个参数对应sql里的“1”、“2”、……参数。这种方法比上一种方法能完成更多的拓展,可以连表,定义子查询等,但是还是只能执行一个sql语句。
3、使用@NoRepositoryBean,定义非仓库bean:
[java] view plain copy
@NoRepositoryBean
interface BaseRepository<T> extends CrudRepository<T, Long> {
long customMethod();
}
实现上面的接口里定义的方法
[java] view plain copy
/
@author Oliver Gierke
@soundtrack Elen - Nobody Else (Elen)
/
class ExtendedJpaRepository<T> extends SimpleJpaRepository<T, Long> implements BaseRepository<T> {
/
Creates a new {@link ExtendedJpaRepository} for the given {@link JpaEntityInformation} and {@link EntityManager}
@param entityInformation must not be {@literal null}
@param entityManager must not be {@literal null}
/
public ExtendedJpaRepository(JpaEntityInformation<T, > entityInformation, EntityManager entityManager) {
super(entityInformation, entityManager);
}
/
(non-Javadoc)
@see examplespringdatajpacustomallBaseRepository#customMethod()
/
@Override
public long customMethod() {
//do some database operation
return 0;
}
}
最后定义我们的仓库bean接口,让这个接口继承我们新的仓库接口而不是CrudRepository或PagingAndSortingRepository
[java] view plain copy
public interface UserRepository extends BaseRepository<User> {}
第三种方式的拓展就非常强大了,在一个方法里面可以想干什么就干什么了,执行多个语句,执行存储过程等。另外上述三种方式是可以结合在一起使用的,并不冲突。
启动项目时所出现的JPA异常:
情况如下图所示:
查看度娘之后,发现此异常是 JPA实体类没有被扫描到。
随后查看了自己的Dao层文件,发现自己Dao层文件注解全是 @Repository ,而JPA注解则是 @NoRepositoryBean
修改完成,重启项目成功。
其它更多的情况可以参考一下这篇博客: >
cannot convert value of type
[javalangString] to required type
[orgspringframeworkormjpavendorDatabase] for property 'database': no matching editors or conversion strategy found
at orgspringframeworkcontextannotationCommonAnnotationBeanPostProcessorpostProcessA
你数据源配置的有问题吧,怎么会有类型转换异常呢?
以上就是关于spring JPA hibernate 多库配置全部的内容,包括:spring JPA hibernate 多库配置、BEAN协议属于什么局域网络、spring jpa dao是怎么自动实现的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)