0

我有一个小问题,我不知道该怎么做。

我使用 Hibernate (MySQL) 来存储(我们称之为)“产品”,并且我有一个名为“标识符”的对象。

Identifier
----------
Listname    | is the name of a txt,csv.... with 1 up to 1000 products
ProductKey  | is just a little piece of information about the product used    
            | to get more information due to an external API
Processed   | simple 1 or 0 to say the Product information is completed

所以桌子可能看起来像这样。

"test.txt" | productkey1234 | 1  
"test.txt" | productkey2345 | 1  
"test.txt" | productkey3456 | 1  
"test.txt" | productkey4567 | 0  
"file.txt" | productkey1 | 1  
"file.txt" | productkey2 | 1  
"file.txt" | productkey3 | 1  

我有一个后台服务,它必须检查列表中的每个产品是否都已处理,如果是,它应该获取所有产品并编写一个包含有关它们的所有完整信息的结果文件。(这不是问题)。

但是,如果我有 6000 个条目和 10 个不同的列表,我如何让 Hibernate 检查所谓的列表是否准备好?(处理列表中的每个产品)

在我使用 Hibernate 之前,我拆分了查询并为自己获取了所有唯一列表,并对每个列表运行了一个循环, "SELECT sum(processed) as done,count(processed) as all from Identifier where list = 'listname'"如果完成等于我知道的所有列表已准备好,我可以获取所有产品并删除包含listname.

4

1 回答 1

0

如果问题是:如何将此 SQL 查询转换为 HQL?,那么答案很简单:

SELECT sum(i.processed) as done, count(i.processed) as all 
from Identifier i 
where i.list = 'listname'

请参阅HQL 中有关聚合函数的文档。

于 2013-04-07T15:49:18.450 回答