gpt4 book ai didi

java - 如何查询/表示列表页中的一对多信息

转载 作者:可可西里 更新时间:2023-11-01 06:37:31 25 4
gpt4 key购买 nike

如何查询/表示列表页中的一对多信息

create users (id, name, ...)
create user_tags (id, user_id, tag_name)

user has 1 to many user_tags

示例数据 - 我希望表格呈现为

user1 tag1,tag2
user2 tag3
user3 tag1
user4
user5 tag5,tag6.tag7

为了构建上表,我必须执行以下操作来构建每一行。

i.e.
select * from users;
for (User user : users) {
// select tag_name from user_tags where user_id = user.id
List<Tag> tags = fetchtags(user)
}

有没有更好的方式获取|为用户缓存标签,这样就不会花费更长的时间来构建上面的用户列表。

最佳答案

您的方法中的主要性能问题是您查询数据库 N+1 次。一次用于所有用户,N 次用于用户标签(N 是用户数)。您应该在联接两个表时使用一个单一的选择语句。

由于您使用 hibernate 标记了您的问题,我想您使用了某种 JPA。 JPA 中的关键字是 JOIN FETCH .一个相关的问题可能是 this one .

关于java - 如何查询/表示列表页中的一对多信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32987660/

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