2011-05-19 61 views
0

我有一个工作的现有域,并且无法根据关联中指定类型的至少一个实例来限制查询的结果采集。在关联集合中至少找到一个指定类型的实例

例如:

说一个人与宠物有一对多的关联。 Pet是抽象的,有几个子类,例如Bird,Cat,Dog等,并且使用按类表层次映射策略进行映射。

如何在hql中写入查询以返回至少有一个关联Dog的所有Person实例?

回答

0

由于宠物处于“多方”状态,因此他们可能会指向各自的Person实体。这意味着你可以选择宠物表中的个人不为空的唯一(人)。由于您使用的是按类表层次结构的表,因此有一个表达器列,因此您可以区分类型,即'.class'。

String hql = "select unique(p.person) from Pet p where p.class = ? and p.person is not null" 

然后使用位置参数执行查询 - 即替换?与DOG或CAT或其他。请注意,我编写了字段名称,因此您必须将其替换为实际值。

相关问题