定义了一对多就不需要用这样的查询语句了
如果你的lazy=false,的话,那直接from MyLog i where i.name=xxx就可以自动查询出所关联的记录 然后在从关联的记录中读出日期
你因为关联在实体类中已经把date定义为set型了,就无法直接读出来了

解决方案 »

  1.   

    要想把 LogItem 用做查询条件的话,你应该指定 JOIN 查询:from MyLog l left join l.items as i where l.name=? and i.date=?
      

  2.   

    谢谢,hxf0759,maquan.
    我只是想是否能查询出MyLog但是,内部包含的对像用条件限定.
    因为一个MyLog旗下的LogItem可能有好几千条,即使设置的是LAZY的方式.我查询LogItem内的信息最坏的情况还是要全部访问一遍,还是会访问到数据库.maquan给出的语句,我一开始用过的.可是查询出来的是包含一个MyLog和若干LogItem对像的Object[].
    方法返回的是MyLog对像,是否我自己再新建一个MyLog对像,再把查询出来的数据放进去返回呢?
      

  3.   

    > maquan给出的语句,我一开始用过的.可是查询出来的是包含一个MyLog和若干LogItem对像的Object[]. 
    > 方法返回的是MyLog对像,是否我自己再新建一个MyLog对像,再把查询出来的数据放进去返回呢?我觉得只能这样了。你现在想得到的那个MyLog对象(用name约束的)和那些LogItem对象(用 date 约束的),从本质上说并不具有“内在的关联关系”,而是通过查询条件把它们关联在一起的,这种关系不能用固定的映射关系来描述,恐怕也不能“天然地查询出一个MyLog对象,让它包含那些LogItem”,只能自己想办法“拼”了,你说的这个方法,我倒觉得是个不错的“拼”的方法  :)
      

  4.   

    > 我只是想是否能查询出MyLog但是,内部包含的对像用条件限定. 
    > 因为一个MyLog旗下的LogItem可能有好几千条,即使设置的是LAZY的方式.我查询LogItem内的信息最坏的情况还是要> 全部访问一遍,还是会访问到数据库.如果级联的关系影响到性能,可以抛开关系。
      

  5.   

    最后还是用hibernate的过滤器解决问题了.谢谢大家.结贴