如何在hibernate表列中检查值数组

时间:2018-04-26 07:06:33

标签: java mysql sql arrays hibernate

我有一个partdetails表,在这部分详细介绍中我预加载了数据。每次我向客户收费时,我都会从partdetails表中获取数据,如果我的表中没有任何数据,则表示我输入了所有详细信息并向客户收费,因此需要在该partdetails表中添加新添加的部件详细信息。这就是我想要做的。

我正在使用休眠... 例如,我的数据看起来像这样

part[0]="abc123" assume (already in table)
part[1]="def123" assume (already not in table)
part[2]="ghi123" assume (already in table)
part[3]="jkl123" assume (already not in table)

select valueflagarray from partsdetails where part

我需要像

这样的valueflagarray
valueflagarray[0]=true
valueflagarray[1]=false
valueflagarray[2]=true
valueflagarray[3]=false

如果使用这个数组,我会插入关于tat部分的信息,如果valueflagarray = flase ..

上述问题我可以使用 for loop 作为select语句。但我需要一个干净的解决方案,因为我有数百万条记录。

array A;
    for (int i=0;i<part.length;i++){
select * from partdetails where partnumber=part[i]
A[i]=resultset.length;

} 我会得到这样的结果,但我不想要这个解决方案。

A[0]=1;
A[1]=1;
A[2]=0;
A[3]=1;

.. 在休眠或其他方面是否有任何内置功能,但我需要减少处理时间。 请帮我。提前谢谢

1 个答案:

答案 0 :(得分:1)

不是在for循环中执行查询而是一次又一次地向数据库伸出结果,你应该像这样执行一个查询:

select * from partdetails where partnumber in (Arrays.stream(part).collect(Collectors.joining(","))

将这些结果收集到Resultset的列表中

现在,迭代数组并检查结果列表中是否存在该部分。如果没有,请将其添加到您的valueflagarray。