我有一个引用另一个类的类。像这样:
Class A {
int id;
Set<Class B> setOfClassB;
}
现在,当我为这个类编写HbDAO时,我有一个查询说,只有当集合中的一个B类具有特定条件时,才会带来A类的所有记录。
因此,例如说B类有一个id和一个名字。所以查询说带来A类的所有记录,其中包含至少一个B,其id = 1234,名称=“somename”。
通常如果该集合只是一些内置变量,如int或string,我会写一个这样的查询:
from A.class.getName() aliasOfA where :someID in elements(aliasOfA.setOfClassB);
但是现在有一个类,我不能写这样的查询:
from A.class.getName() aliasOfA where :someID in elements(aliasOfA.setOfClassB.name);
这种情况的正确查询是什么?
从我的观点来看,这是一个可能的解决方案:
但我不想这样做。我想指示HQL执行此操作。此外,我不想编写纯SQL查询,因为那时我将不得不在这个上做很多连接。 这些是我最后的度假胜地。
PS:我搜索了Google,但找不到任何有用的内容。这主要是因为我不明白如何用正确的话说出这个问题。 ^ _ ^
答案 0 :(得分:1)
只需使用加入:
select distinct a from A a
inner join a.setOfClassB b
where b.id = 1234 and b.name = 'somename'