1.如何使用一条hql检索语句跨数据库关联查询。
目前的解决办法是在其中一个数据库检索出结果,再在另一个数据库使用select ...where userid in(....)这种做法影响性能

2.hibernate如何使用左关联,是否必须在配置文件中做好Association Mapping (mang to one)才能使用。我们系统的数据库一律没有设置外键关联,所有orm都不设置Association Mapping 。

当前解决办法是 一、在java程序中解决,二、修改数据存储结构,使得不必使用到left join

3. hibernater如何获得一个检索结果(含group by子句)的记录数

检索语句如下:
select count(*) from (select u.name from Users as u group by u.name) as abc
异常为:
net.sf.hibernate.QueryException: in expected: select [select count(*) from (select u.name from User as u group by u.name)

现在的解决办法是先执行select u.name from Users as u group by u.name以后从结果集list中获得长度,这样做在大数据量时会影响性能。

 

4.数据库在访问部分表的时候速度突然变慢,而过几分钟会自然恢复。连接池已经设置为30个。

不知道是否和hibernate的session有关,我们的sessionfactory是为struts编写插件获得的,sesson采用官方推荐的ThreadLocal实现的。

此外,由于使用到一些以前系统的模块,比如权限管理,报表等,这些模块不是使用hibernate, 有自己的连接池。(曾经尝试使用现在系统hibernate的session获得连接,无法很好兼容,故不用),不知这是否与数据库变慢有关。