我使用Hibernate的一个主要原因是它提供了切换到另一个数据库的灵活性,而无需重写任何代码.
但到目前为止,我还没有想出一个很好的方法来定义与我的hibernate实体匹配的表的其他视图; 我仍在使用简单的SQL脚本.有没有更优雅的方法来定义由hibernate管理的表的视图?
理想情况下,我想使用HQL或其他通用方法来完成这项工作,这样我就不必担心我的SQL脚本与其他类型的数据库不兼容.
如果有办法做到这一点,那么第二个问题就是从这些视图中获取"合成"只读实例,这样可以更容易地将聚合数据提供给UI.
编辑:
好像我没有把问题弄清楚,所以这就是我想要做的:我想编写独立于使用过的数据库的代码.由于我使用hibernate,我只需要更改方言配置文件,然后可以使用另一个DBMS.
问题:如何在不依赖特定SQL方言(保持一切可移植性)甚至是HQL的情况下在我的hibernate实体上创建视图?如果可能的话,我可以使用HQL查询这些视图,即创建只读聚合实体吗?是否有任何额外的hibernate插件来帮助我?到目前为止还没找到任何东西...: - /
这是我的存储过程
Create PROCEDURE [dbo].getUserAndEnum
AS
BEGIN
select * from user_master where id =1
select * from enum_master where id = 1
End
Run Code Online (Sandbox Code Playgroud)
用hibernate写的
Session session = HibernateFactory.getSessionFactory().openSession();
Transaction tr = session.beginTransaction();
SQLQuery qr=session.createSQLQuery("getUserAndEnum");
List list = qr.list();
Run Code Online (Sandbox Code Playgroud)
在列表中我只获取用户对象..我的enum_master行的ID为1
数据库中存在ID为1的PS enum_master行
谢谢.