当前位置:  开发笔记 > Android > 正文

Hibernate在运行时更改获取模式

如何解决《Hibernate在运行时更改获取模式》经验,为你挑选了2个好方法。

我有两个使用一对多关系相关联的表:employee - > department:和employee表中的department_id关系.

我使用hibernate:我的hibernate映射文件是:





 
  
   
   
  
  
   
  
  
   
  
  
   
  
  
   
  
  
   
  
 

第二个映射文件是:





 
  
   
   
  
  
   
  
  
   
    
   
   
  
 

我的问题是:有时我需要让他的员工与他的部门,有时我只需要员工信息与部门信息.....和部门与员工相同的事情....使用上面的映射文件如果我需要员工,hibernate会带来部门及其用户...如何定义我需要休眠来获取我需要的东西......

谢谢



1> andcoz..:

您可以将关系映射为"lazy"并编写两个查询来获取数据:

通常简单的查询来获取您的数据("懒惰").例如"从员工e中选择e ......"

使用"fetch join"强制Hibernate获取"childs"的相同查询.例如"从员工中选择e离开联系获取e.department where ......"

LLP,Andrea



2> Frederik Ghe..:

您可以使用ICriteria来获取您的员工.

您可以使用ICriteria的SetFetchMode方法来确定是否应该获取Department:

这将确保不提取部门:

ICriteria crit = theSession.CreateCriteria (typeof(Employee));
crit.SetFetchMode ("Department", FetchMode.Lazy)

使用此代码,将获取部门.

ICriteria crit = theSession.CreateCriteria (typeof(Employee));
crit.SetFetchMode ("Department", FetchMode.Join)

有人说最好的做法是在映射中使用默认的fetchmode(我猜这会很懒),并在每个特定的场景中指定fetch-mode.(也就是说,在您的存储库中).

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有