0

我的课程有一些领域,其中之一是孩子的集合。问题是孩子使班级独一无二,我必须按孩子搜索重复项(从一开始班级就没有任何ID)。

所以我这样写:

SELECT c
FROM Class c, IN(c.children) c1, IN(c.children) c2, IN(c.children) c3
WHERE c.project='project' AND c1.name='name1' AND c2.name='name2' AND c3.name='name3'

当您或多或少拥有独特的 c.project 时,它可以正常工作。但在某些情况下,我必须使用相同的项目(或 null)导入大量数据,然后在 3-4 个孩子的 200-300 c 上搜索可能需要 5-6 秒。

我想我错过了一些大事,但不知道到底是什么。你能帮我么。

更新:这个查询可以给我线索,如果我已经在数据库中有这样的对象并且不需要再添加一个(正如我所说的 - 从一开始就没有 ID)。我的意思是 - 如果数据库中存在具有相同项目(项目!= ID)和相同子集的对象,我不需要再添加一个,否则我需要创建新记录。

4

1 回答 1

1

假设您不能为给定的父母有两个同名的孩子,您可以执行以下操作:

select count(child.id) from Parent p inner join p.children child
where p.project = 'project' and child.name in ('name1', 'name2', 'name3')

如果它返回 3 或更多,则具有这些孩子的父母已经存在。

于 2012-07-26T11:46:38.430 回答