java hibernate fifo查询?

java hibernate fifo查询?,java,mysql,hibernate,Java,Mysql,Hibernate,我正在使用java+hibernate创建一个会计应用程序。我有一张代表存货的桌子。购买物品和出售物品 日期、买卖、价格、数量 假设我有以下数据 1 buy 2.00 1 2 sell 2.25 1 3 buy 3.00 2 4 sell 2.90 1 如何编写返回不匹配条目的查询(买入而不卖出或vic eversa)?以及如何获得匹配的?(假设列表更大,数量变化更大) 我的想法是取销售的sumproduct,然后从匹配数量的购买的sumproduct中减去,以表示库存损益,并将不匹配的条目作

我正在使用java+hibernate创建一个会计应用程序。我有一张代表存货的桌子。购买物品和出售物品

日期、买卖、价格、数量

假设我有以下数据

1 buy 2.00 1
2 sell 2.25 1
3 buy 3.00 2
4 sell 2.90 1
如何编写返回不匹配条目的查询(买入而不卖出或vic eversa)?以及如何获得匹配的?(假设列表更大,数量变化更大)

我的想法是取销售的sumproduct,然后从匹配数量的购买的sumproduct中减去,以表示库存损益,并将不匹配的条目作为我仍然持有的库存

返回: 2.57-2.50=匹配订单的0.07(即库存损益表)

和(不在同一功能中)

退货:3.00,1(剩余库存数量和价格)

我可以通过一个查询来实现这一点,还是需要执行多个查询/操作

试图弄清楚我是否可以在查询行而不是for循环中获取功能

public void findMatched() {
    Session session = sessionFactory.openSession();
    Transaction tx = null;
    StringBuilder obsbmsg;
    try {
        tx = session.beginTransaction();

        **Query query = session.createQuery("FROM Inventory");**
        List orders = query.list(); 
        int i;
        i=1;
        obsbmsg= new StringBuilder();
        boolean check = orders.iterator().hasNext();
        if (check) {
            for (Iterator iterator = orders.iterator(); iterator.hasNext();) {
                Orderbook obo = (Orderbook) iterator.next(); 

                // do stuff
            }
        } else {    
            System.out.println("No Entries in Table");

        }
        tx.commit();
    } catch (HibernateException e) {
        if (tx!=null) tx.rollback();
        e.printStackTrace(); 
    } finally {
        session.close(); 
    }
}

如果您使用的是hibernate,那么您将有一个实体映射。你能给我们看一下相关的部分吗?实体映射正确。。我想知道是否/什么是最好的sql查询来完成我没有遵循的:您有一个正在查询的
库存
实体,然后将其转换为
订单
?此外,您的订单日志需要有正在销售/购买的产品的参考。您可以通过对交易类型(买入/卖出)和产品/产品id进行分组,并对相应的条目求和。