现在有这么一个关系Apply类中有个属性xDataEntity(XDataEntity),Apply和XDataEntity是一对一得关系
XDataEntity类中有个fields属性(Set<XDataDetailEntity>)XDataEntity和XDataDetailEntity(属性:name,value)是一对多的关系现在问题是这样的我想查询出 Apply.getXDataEntity.getFields集合中的(name='a' and value='1') and (name='b' and value='2')的所有满足条件的Apply的所有记录用HQL查询其中我是这样写的:select apply from Apply as apply left outer join apply.xDataEntity.fields as field where (field.name='a' and field.value = 1 ) and (field.name='b' and field.value =2 )
这样虽然没错但查询不出数据来多谢指点

解决方案 »

  1.   

    是Hql语句吗?from Apply apply join fetch apply.xDataEntity xdata join fetch xdata.fields field
    where field.name='a' and field.value = 1 ) or (field.name='b' and field.value =2 )
      

  2.   

    (field.name='a' and field.value = 1 ) and (field.name='b' and field.value =2 ) 
    你这样是不是矛盾了?把中间的and改为or试试
      

  3.   

    楼上的朋友都好,用or是不行啊,因为在apply.xDataEntity.fields 集合中必须包含这(field.name='a' and field.value = 1 ) 和(field.name='b' and field.value =2 )两个对象才行,只有一个对象存在是不满足要求的
      

  4.   

    晕死,
    集合中必须包含这(field.name='a' and field.value = 1 ) 和(field.name='b' and field.value =2 )两个对象才行,不用or用什么?
    用and,想想都知道field.name='a',并且field.name='b',这样的条件怎么成立?
      

  5.   

    你用or试过了没有?如果没有试过简直是浪费了楼上各位为你辛苦解答。为什么不行呢?明显你的理解出现了偏差。如果你用and ,请问哪个field记录能满足 name=a and value=1 and name = b and value = 2呢。当然查不出来结果。而 or 并不是说只有一个对象。而是说只要对象满足(field.name='a' and field.value = 1 ) 或者 满足(field.name='b' and field.value =2 ) 。 
    搞清楚,查询的时候,数据库是一条记录一条记录来对比的。而不是以下子把所有数据拿出来对比。
    如果你的数据库中有这样两条记录
    name = a value = 1
    name = b value = 2那么就能查到这两条记录!!!!!!
      

  6.   

    哈哈,多谢大家的支持,可能大家还是没有理解我的意思我再说清楚点现在有这么一个关系 Apply类中有个属性xDataEntity(XDataEntity),Apply和XDataEntity是一对一得关系 
    XDataEntity类中有个fields属性(Set <XDataDetailEntity>)XDataEntity和XDataDetailEntity(属性:name,value)是一对多的关系 现在问题是这样的 我想查询出 Apply.getXDataEntity.getFields集合中必须同时存在对象A(name='a' and value='1') 和对象B(name='b' and value='2')的所有满足条件的Apply的所有记录(哈哈,感觉有点绕),存在其中一个对象(A or B)也不行这样的要求不知道用HQL怎么写了,感觉很难写,请各位帮忙了,哈哈,多谢了啊其中我是这样写的:select apply from Apply as apply left outer join apply.xDataEntity.fields as field where ...(不知道该怎么写了)
      

  7.   

    多谢楼上的朋友们的回答,不过还是没有解决问题现在有这么一个关系 Apply类中有个属性xDataEntity(XDataEntity),Apply和XDataEntity是一对一得关系 
    XDataEntity类中有个fields属性(Set <XDataDetailEntity>)XDataEntity和XDataDetailEntity(属性:name,value)是一对多的关系 现在问题是这样的 我想查询出 Apply.getXDataEntity.getFields集合中必须同时存在对象A(name='a' and value='1') 和对象B(name='b' and value='2')的所有满足条件的Apply的所有记录(哈哈,感觉有点绕),仅存在其中一个对象(A or B)是不符合要求的 这样的要求不知道用HQL怎么写了,感觉很难写,请各位帮忙了,哈哈,多谢了啊 其中我是这样写的:select apply from Apply as apply left outer join apply.xDataEntity.fields as field where (field.name='a' and field.value = 1 ) or (field.name='b' and field.value =2 )这样可以查询出来,但是(仅存在其中一个对象(A or B)是不符合要求的)这样是不合要求啊,哎,不知道怎么写了啊!请大家帮帮忙啊