从父表中获取符合子表中某些条件的所有元素(一对多)

时间:2013-07-21 11:21:02

标签: java hibernate hibernate-criteria

假设我有两张桌子,例如:

表A:

  • 身份证号码
  • [任何其他领域]

表B:

  • id号码(它与表A中的id相同,因此是外键)
  • some_value varchar2

表B可以为一个表A条目提供许多条目。

使用此设置,如果我对表A有一些休眠查询,我可以通过添加此标准来查看表B中有多少条目:

Restrictions.sizeGt("TableB", 0)

这将运行如下的查询:

select id from table_a tba where 0 < (select count(*) from table_b where tba.id = id)

但是,我需要能够添加一个限制,将比较某些列表中的所有值作为此限制的一部分,一些sql代码如:

select id from table_a tba where 0 < (select count(*) from table_b where tba.id = id and some_value in (...))

有了这个限制,我可以来计算,但没有我需要的列表比较。任何向主查询添加标准的尝试都让我将第二个表作为连接包含在内,我不需要...

不得不说表A和表B已经是持久化类,表B在表A映射中定义如下:

    <map name="TableB" table="table_b" cascade="all, delete-orphan" inverse="true" lazy="true">
        <key column="id"/>
        <index column="some_value" type="string"/>
        <one-to-many class="myClassDef"/>
    </map>

所以,问题是,如何将标准添加到sizeGt限制中,以便我可以考虑除映射中定义的主键之外的其他字段?

此致

0 个答案:

没有答案