gpt4 book ai didi

java - 从hibernate sql join获取多个实体

转载 作者:太空宇宙 更新时间:2023-11-04 13:54:06 24 4
gpt4 key购买 nike

我有 4 张 table :

订单(orderID、orderDate、orderItem(OneToMany))

OrderItem(id,订单(manyToOne),书籍(manyToOne),数量)

书籍(id、标题、费用)

用户(id、用户名、密码)

这是我在 SQL 中的查询:

String sql = "SELECT orders.id, book.title, orderitem.quantity
FROM orderitem INNER JOIN book ON book.id = orderitem.book_id INNER JOIN orders ON orders.id = orderitem.orders_id WHERE user_id = 1;

(user_id是Orders表中User的外键)

(orders_id是OrderItem表中Orders的外键)

List<OrderItem> orderBookInfo = (List<OrderItem>) session.createSQLQuery(sql); // returns List<Object[]> why?!

此查询结果来自 3 个表的连接(BookOrderOderItem)

这是表中的结果:

enter image description here

问题是如何将每个结果的列分配给其相应的属性?

例如:

orderBookInfo.order.id = (first location of orderBookInfo)

orderBookInfo.book.title = (second location of orderBookInfo)

最佳答案

您需要改为执行实体查询。假设您已经正确映射实体,HQL 查询如下所示:

SELECT o
FROM orderitem oi
JOIN FETCH oi.book
JOIN FETCH oi.orders
JOIN FETCH oi.user u
WHERE u.id = 1;

关于java - 从hibernate sql join获取多个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30016379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com