猿问

请问要查出下面所示的树,应该怎么写?

现有2个表  Person(id,person) ,Email(id,email,person_id); 
现在要查出下列树: 

               person01 
               |    |_email01 
               | 
               person02 
               |    |_email02 
               |    |_email03 
               | 
               person03 
                     |_email04 
                     |_email05 
                     |_email06 
               
pojo 为 Person.java,Email.java 

现在知道Email的id(ex. email01,email03,email05),要查出上图所示的树,应该怎么写?

繁华开满天机
浏览 131回答 3
3回答

米脂

方法1,hql: select * from Email e where e.id in (id1,id2,id3)&nbsp;这样得到email对象的集合List<Email> listE;&nbsp;然后 Set<Person> set=new HashSet();&nbsp;for(Email e:listE){&nbsp;&nbsp; set.add(e.getPerson);&nbsp;}&nbsp;set是可以去除重复的。&nbsp;方法2,用hql,先用这些email的id得到所有personid,然后用这些personid,查询person对象集合。

森林海

假如person对应的email是有条件的,那么此时有两种办法。&nbsp;1,程序循环email,手动过滤。&nbsp;2,还是用hql或sql手动查 不用自动关联。

杨__羊羊

你hibernate肯定有关联吧。&nbsp;通过id得到email对象,这个对象关联person对象,而person会关联它下面的所有email对象,这样就行了。也就是说在hibernate里面,你只需要得到person就行了。至于它下面的email被延迟加载出来就行了。
随时随地看视频慕课网APP

相关分类

MySQL
我要回答