如何通过sql查询构建嵌套对象

时间:2019-04-12 01:21:52

标签: java sql

我有一个查询,该查询从多个表返回数据。在应用程序中,这些表是一个又一个的类,例如,一个客户有多个Order,每个Order具有多个OrderDetails,每个OrderDetail具有多个Products,依此类推...但是我无法找出正确的构建方法应用程序中的整个对象,因为查询为每种产品返回一行(让我们说),所以我有一个客户一遍又一遍地重复购买的每种产品。

到目前为止,我已经尝试过这种效率极低的代码,并且有效,问题是,当应用程序检索到多个客户端时,该应用程序需要花费太多时间来处理所有这些信息。

 boolean orderFound = false;
                for (Order order1 : orders) {
                    if (order1 .getId() == order.getId()) {
                        orderFound = true;
                        if (od.getId() != 0) {
                            boolean odFound = false;

         for (OrderDetail orderdetail : order1.getOrderDetail()) {
                                if (orderDetail.getId() == od.getId()) {
                                    if (prod.getId() != 0) {
                                        odFound = true;
                                        boolean prodFound= false;
                                        for (Product product: orderDetail.getProducts()) {
                                            if (product.getId() == product.getId()) {
                                                prodFound= true;
                                            }
                                        }
                                        if (!prodFound) {
                                            orderDetail.getProducts().add(dia);
                                        }
                                    }

                            if (!odFound) {
                                order1.getOrderDetail().add(od);
                            }
                        }
                    }
                }
                if (!orderFound) {
                    if (order.getId() != 0) {
                        orders.add(order);

这可行,但是必须有更好的方法,但我还没有找到。有人告诉我可以使用HashSets解决此问题,但我仍然不知道如何使用它们。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您愿意使用第三方库,我想这就是您要寻找的: How to use hibernate to query for an object with a nested object that has a nested collection of objects