当前位置: 代码迷 >> J2EE >> 高分求HQL join fetch思路.解决思路
  详细解决方案

高分求HQL join fetch思路.解决思路

热度:13   发布时间:2016-04-22 00:36:28.0
高分求HQL join fetch思路..
Java code
    //数据库是mysql,现在这个hql不能跑。     select distinct rl from SysRole rl left outer join fetch rl.rights where rl.roleId=1              //这是关联字段    SysRole    private Long roleId;    private String roleName;    private String roleDesc;    private Integer roleFlag;    private Set users = new HashSet(0);    private List rights = new ArrayList(0);       //这是关联字段    SysRight    private String rightCode;    private String rightParentCode;    private String rightType;    private String rightText;    private String rightUrl;    private String rightTip;    private String isSelected = "";    private Set roles = new HashSet(0);


  问题: 弱弱的问一句各位大大,这句hql是什么意思呀。可以改成通俗点的自然语句么?能不能多打几个字说的详细点,举例子就好了。谢谢大家了...对了。我的原数据库是sqlServer2005,现在是mysql5 ,这个应该没关系吧?

------解决方案--------------------
HQl是hibernate中的一种检索方式。
有HQL,QBC,QBE以及本地的sql检索。
从sqlServer2005,改成现在的mysql5没有问题。
------解决方案--------------------
抓取策略(fetching strategy) 是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候, Hibernate如何获取关联对象的策略。抓取策略可以在O/R映射的元数据中声明,也可以在特定的HQL 或条件查询(Criteria Query)中重载声明。 

连接抓取(Join fetching) - Hibernate通过 在SELECT语句使用OUTER JOIN(外连接)来 获得对象的关联实例或者关联集合。 

hql支持left outer join和fetch啊
------解决方案--------------------
hql 是hibernate自己的查询语言,,他是对sql语言的封装版本,,hibernate是可以结合各种数据库去用的,而每个数据库都有自己一些独特的函数功能,就同一功能其底层的实现方法也是不一样的。所以
hibernate就是提供了一套对客户的透明的解决方案,相当于一个adapater,我们写一条语句,无论在哪个数据库上都能实现其功能。
从sqlServer2005,现在是mysql5 有两个地方是需要改动的,,数据库的方言,,和驱动程序的路径,,
<property name="dialect">org.hibernate.dialect.DB2Dialect</property>
------解决方案--------------------
  相关解决方案