Hibernate一对多查询方法小记

 

其实,这个地方我真心不是太明白,甚至说很混乱,但是有DAO和VO就啥都当对象来吧。

比如两个表User和Profile,通过外键将其关联起来,user的主键为profile的外键,通过Hibernate生成DAO和VO,则userDAO中会有很多查询user的方法,而user的VO会多一个set类的getProfiles(),如何通过这个set来查询VO的profile信息呢,查了一些资料,算是知道怎么回事儿了。

  1. public Set getProfiles() { 
  2.         return this.profiles; 

user VO的get方法得到的是profile类型的set,也就是说这个set迭代出来的是profile对象。使用方法可以是:

  1. User user = new User(); 
  2. Set<Profile> profileset = user.getProfiles(); 
  3. Iterator<Profile> iterator = profileset.iterator(); 
  4. While(iterator.hasNext()){ 
  5.         Profile profile = iterator.next(); 
  6.         System.out.print(profile.getEmail); 

这样子就迭代出来了。

对于profile的VO也同样有public User getUser()方法,可以直接返回user VO对象。

ProfileDAO如何通过外键来查找vo对象的方法:

  1. ProfileDAO profiledao = new ProfileDAO(); 
  2. Iterator<Profile> i = profiledao.findByProperty("user.id",1).iterator(); 
  3. while(i.hasNext()){ 
  4.      Profile p = i.next(); 
  5.      System.out.print(p.getEmail); 

有了上面的互相查询的方法,这个看着仿佛是多此一举,不过也还算可用。

奶牛 | 2013年04月19日