假设我有两张桌子,例如:
表A:
表B:
表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限制中,以便我可以考虑除映射中定义的主键之外的其他字段?
此致