【问题标题】:How to store results into a Map in hibernate?如何在休眠中将结果存储到地图中?
【发布时间】:2020-05-19 06:34:43
【问题描述】:

我需要一个帮助。 我有一个表 - ACCOUNT 存储 USER_ID 和 ACCOUNT_DETAIL。具有不同 ACCOUNT_DETAIL 的单个 USER_ID 有多个记录。 我想将此记录存储在地图中,其中 USER_ID 将是键,帐户列表将是值。我得到了 USER_ID 的列表 来自 USER 表。然后对于每个用户 ID,我需要获取帐户详细信息。

我可以通过实现以下算法\逻辑来填充该地图:

第 1 步: 从 USER 表中获取 userIds 并将其存储在列表中 - userList

第 2 步:

for (User user : userList) {

// Make a DB call to ACCOUNT table for user.id
// Put those details in the map - map.put(user.id, accountList)
}

但这里的问题是,如果 USER 表有 1K 记录,我必须从该循环进行 1K db 调用,这将导致性能问题。 您能否告诉我是否有更好的方法可以通过使用 hibernate 来实现这一点?

【问题讨论】:

  • 这意味着你已经明白地图不支持分页?因此对于这种数据结构来说并不是一个很好的选择。什么是整体用例?一些后台批处理?还是必须为每个用户运行?
  • @AntJavaDev 根据用例,这必须为每个用户运行。它不是批处理作业
  • hmmm,那么您必须执行自定义分页以涵盖整个用户/帐户映射。另一个问题只是为了理解为什么你需要一个地图,在你的例子中,只有一个用户,你还要获取所有其他用户的数据?还是有其他联系?还是地图总是包含一个 USER_ID?

标签: java hibernate hibernate-mapping


【解决方案1】:

使用 HQL 连接查询(ACCOUNT 和 USER)获取所有帐户并通过迭代帐户来构建映射。

select acc from Account acc, User usr where acc.userId = usr.id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-11
    • 2016-01-05
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 2015-02-06
    相关资源
    最近更新 更多