如何以树形视图显示消息回复? Java 和休眠

2024-01-02

我有消息,需要显示十个(例如)第一个“根”回复以及对其自身的所有回复,并且它应该看起来像一棵树。 (标准消息和树状回复视图,你知道)。 所以,问题是 - 如何从数据库获取它 - 我正在使用休眠,据我所知,它将需要很多时间 - 递归地检索整个集合本身以及所有子树。 (而且,也许它只适用于小型集合,否则递归会导致堆栈溢出(哈哈。我们在这里:)) 有没有更有效的决策?

所以现在我有类似下面的代码,但我需要另一种方法(BaseEntry 是消息和任何回复的类):

@Entity public class BaseEntry extends VersionedEntity {
private @Nullable BaseEntry parent;

@ManyToOne
@ForeignKey(name="base_entry_parent__base_entry_fk")
@Nullable public BaseEntry getParent()
{
    return parent;
}

@OneToMany(mappedBy = "parent", cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
private List<BaseEntry> children;

...

请你给我一些建议好吗?


有一个更有效的解决方案,但这意味着彻底改变数据库中存储内容的方式。读http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/学习如何使用嵌套集树。这种方法使得写入成本高昂,但读取成本却低得多。如果您为已索引的根节点添加标志,则可以轻松获取根节点列表,然后获取子树。

我建议对他们的方法进行重大修改。他们使用完全没有间隙的整数集。这意味着每次写入都必须对树中的所有内容重新编号。这使得写一个lot更贵。但假设您以 2**20 的间隙开始根节点,并且默认情况下让每个子节点占用其可用空间的一半。然后,您无需进行任何重新编号,直到获得一组深度或宽度为 21 的回复为止。当您重新编号时,您可以仅对根节点下方的子树进行重新编号,因为您仍然有足够的间隙可以使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以树形视图显示消息回复? Java 和休眠 的相关文章

  • 加快 SpriteSheet 的 UIImage 创建速度

    我不确定我的标题是否正确 但我不确定我的问题到底在哪里 我需要从 spritesheet 加载 UIImage 数组 然后将其用作 UIImageView 中的动画 spritesheet是用TexturePacker生成的 它生成巨大的图
  • 为什么用java日历解析时会得到错误的月份

    Date fakeDate sdf parse 15 07 2013 11 00 AM Calendar calendar Calendar getInstance calendar setTime fakeDate int current
  • Android 服务 START_STICKY START_NOT_STICKY

    我需要让我的服务始终在后台运行 并使用 startService 函数启动我的服务 无论应用程序的状态如何 我都不想重新启动服务 这是我的观察 START STICKY gt 如果应用程序启动 则服务正在重新启动 当应用程序关闭时 服务也会
  • .NET 世界有 Maven 替代方案或端口吗?

    NET 世界有 Maven 替代方案或端口吗 我很想使用 Java 世界拥有的良好依赖管理系统 但我没有找到任何可与 NET 项目相媲美的系统 NMaven http incubator apache org nmaven 是第一个 官方努
  • 如何增加使用 SAX 解析 XML 文件的entityExpansionLimit

    我正在尝试使用 Java 中的 SAX 解析器解析一个 1 23 GB 的 XML 文件 我使用的是 Mac 操作系统和 JDK 1 7 0 51 不幸的是 我收到以下错误 The pasrser has encountered more
  • rmi类找不到异常

    我使用 java rmi 编写了一个简单的项目并导出到可执行 jar 文件 当我尝试运行它时 有时会出现异常 有时会起作用 当我指定 Djava rmi server codebase file serverClasses 时 它似乎没有正
  • 在 Selenium Grid 中注册 PhantomJS 节点时出错

    我有以下问题 我成功启动了 Selenium Grid hub java jar selenium server standalone 2 53 0 jar role hub 之后我尝试使用以下命令启动 PhantomJS 节点 phant
  • 无法从 PDFA1-a 格式文档中提取图像

    我正在使用以下代码从 PDFA1 a 格式的 pdf 中提取图像 但我无法获取图像 List
  • 为什么在大多数开源java项目中局部变量没有被声明为final?

    如果我查看 OpenJDK Hibernate 或 Apache 中的 java 源代码 我还没有看到任何声明为 Final 的局部变量 这表明一些最广泛使用的 java 软件库的开发人员 不要相信final关键字可以提高可读性 不相信它会
  • 如何在 HashiCorp Vault 中安全地存储 Spring Boot 应用程序的机密?

    我已阅读以下教程 保险库配置 https spring io guides gs vault config 好的 我们安装了 Vault 服务器并放置了 2 对秘密属性 vault kv put secret gs vault config
  • toArray 与预先确定大小的数组

    使用时ar toArray new String ar size 安卓工作室3 2 1警告预先确定大小的数组并建议空数组 有两种方式将集合转换为数组 使用 预先确定大小的数组 如 c toArray new String c size 或使
  • Apache Camel - 路由中的事务

    我有一个关于 Apache Camel 的一般性问题 我无法找到聚合器是否已进行交易 如果是交易 交易是如何实现的 聚合的速度有多快 将消息发送到聚合器可以在事务中运行 您需要一个带有聚合器的持久存储来让传出消息充当事务 请参阅有关持久性的
  • 将 JPanel 添加到 JFrame

    我有一个程序 其中将 JPanel 添加到 JFrame public class Test Test2 test new Test2 JFrame frame new JFrame Test frame setLayout new Bor
  • 枚举

    我试图拥有一组扩展通用接口的枚举 例如 interface Fooable void someCommonMethod enum E1 implements Fooable some enumuerations and a definiti
  • 避免加密和编码的 URL 字符串中的换行符

    我正在尝试实现一个简单的字符串编码器来混淆 URL 字符串的某些部分 以防止它们被用户弄乱 我使用的代码几乎与示例中的相同JCA指南 http docs oracle com javase 6 docs technotes guides s
  • 如何使用现代.fxml和controller.java在javafx 2.x中制作自动完成组合框[重复]

    这个问题在这里已经有答案了 如何使用现代 fxml 和controller java 在 javafx 2 x 中制作一个类似的自动完成组合框 就像制作这个一样 http blog ngopal com np 2011 07 04 auto
  • 如何在 Android 应用程序退出之前进行一些清理?

    当我的 Android 应用程序终止时 是否有某种 onTerminate 方法可以进行一些清理 我想清除一些 SharedPreferences 我有一个活动 它保持几个数字的运行平均值 并将其存储在 SharedPreference 中
  • Hibernate 返回 PersistentBag 而不是 List

    我在下面给出的两个实体之间有以下关系 当我从存储库获取 OutletProductVariety 对象时 即使在使用 fetchtype Eager 后 价格也会出现在 PersistentBag 中 而不是作为列表 Entity publ
  • Cassandra 会话与集群 有什么可分享的?

    考虑 Cassandra 的 Session 和 Cluster 类 Java 驱动程序 我想知道有什么区别 在 Hibernate 中 每次都会创建一个会话并共享会话工厂 从许多来源我了解到 它被认为是创建一个会话并在多个线程之间共享它
  • Java编程编译jar

    我有一个文本文件中的java源代码 必须在源代码中输入一些自定义的硬编码变量 然后将其转换为 jar 这是可行的 但是当我运行 jar 时 找不到 Main 类 当我用 WinRAR 解压 jar 文件时 我似乎找不到错误 当我通过 cmd

随机推荐

  • 过滤特定行

    我目前正在尝试从日志文件中过滤特定行 我在日志文件中的行具有以下模式 8 05 13 14 24 55 468 RuntimeErrorI E LaError 8 05 13 14 24 55 468 AbcdEfg W SomeWarni
  • 使用 django 为一个模型的属性使用多个输入字段

    In models py I have class myModel period models CharField max length 100 blank True the period应该包含类似的内容 DD HH MM SS 在 HT
  • SetWindowPos 返回拒绝访问

    我正在构建可帮助拍摄所选窗口的屏幕截图的应用程序 我在选定的窗口上显示半透明表单 在本例中我使用的是 winapi DllImport user32 dll SetLastError true public static extern bo
  • 是否有可能在 WPF / Touch 应用程序中弹出一个忽略 MenuDropAlignment 的窗口?

    作为一点背景知识 Windows 有一个针对触摸 平板电脑的功能 它可以根据您的 用手习惯 来移动弹出窗口 菜单的位置 以防止菜单出现在您的手下 从本质上讲 如果您设置为 右手 连接触摸设备后似乎默认为右手 您打开的每个弹出窗口都会被人为地
  • javascript 中用于文件路径验证的正则表达式

    我似乎找不到可以测试以下情况的 JavaScript 正则表达式 c temp D 目录名 testing john desktop tempdir 你可以看到我要做什么 我只需要它来验证文件路径 但我发现的所有表达式似乎都不适用于 Jav
  • 保护对 Kafka Connect REST API 的访问

    Kafka Connect 的 REST API 不安全且未经过身份验证 由于它未经身份验证 因此任何人都可以轻松访问连接器或任务的配置 由于这些配置可能包含如何访问源系统 在 SourceConnector 的情况下 和目标系统 在 Si
  • Windows 中哪个进程是用户特定的?

    我想知道 Windows 中的哪个进程是特定于用户的 我的意思是它是为每个用户登录创建的 我尝试了 explorer exe 但是当您切换用户并登录新帐户时 它会在我的代码中显示旧的登录名 基本上我只需要记录在应用程序中登录的用户 如果您需
  • 在 Outlook 2016 中添加上下文菜单项

    在 Outlook 2007 中 当用户右键单击邮件项目时 以下代码将菜单项添加到上下文菜单中 然而在 Outlook 2016 中这不起作用 这段代码根本没有被执行 Sub Application ItemContextMenuDispl
  • Android,我看到堆在增长,但我希望它停止

    我看到我的堆不断增长 并且我知道它最终会在任何设备上崩溃 因为它一直在增长 Grow heap frag case 在整个日志中都可以看到 在我的手机上 当使用 32mb 时 应用程序就会崩溃 其他手机当然是 16mb 如果有那么少的资源运
  • 单击按钮即可更新 asp.net 表

    我是 ASP NET 的新手 遇到了一个非常愚蠢的问题 但我无法弄清楚 我有一个表单 由 page load 上的数据库数据填充 用户更新表单的输入文本并单击 更新 按钮 它会更新 但会使用旧数据进行更新 为什么要用旧数据更新它 这是asp
  • 轨道 HAML 表格

    我目前正在尝试将 ERB 布局转换为 HAML 这是我不断收到的错误 index html haml 18 syntax error unexpected n hamlout format 这是 HAML 页面 row fluid span
  • 如何配置log4j只保留最近7天的日志文件?

    我在使用多个 Java 应用程序时遇到以下日志记录问题log4j用于记录 我希望日志文件每天轮换 例如 log 2010 09 10 log 2010 09 09 log 2010 09 08 log 2010 09 07 log 2010
  • 将单元测试添加到遗留代码[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您是否曾经在事后向遗留代码中添加过单元测试 代码有多复杂 存根和模拟所有内容有多困难 最终的结果值得吗 我发现最好的方法是逐步添加单元测试 而不
  • 如何在 Windows 上的 Perl 中将具有 UTF-8 文件名的文件复制到另一个 UTF-8 文件名?

    例如 给定一个空文件 txt 我该如何制作一个名为 txt copy 我第一次破解它设法访问该文件并创建新文件名 但生成的副本 txt copy 这是我的第一次尝试 usr bin env perl use strict use warni
  • d3 onclick 获取具体路径/栏参考

    如果我有 d3 dc 图表 并且我设置了一个单击事件处理程序 如下所示 var data city New York neighborhood N A hits 200 city New York neighborhood Brooklyn
  • 通过键合并数据框中的行

    如果我有一个带有关键列和数据列的数据框 就像这样 df lt cbind key c Jane Jane Sam Sam Mary var1 c a NA a a c var2 c NA b NA b d key var1 var2 Jan
  • 添加 IIS UrlRewrite 似乎会破坏本地 IIS 服务器上的调试

    这个问题让我发疯 我正在开发一个最近创建的项目 突然我无法调试该特定项目 我使用带有 IIS UrlRewrite 2 模块的本地 IIS 7 5 我的开发机器是 Windows 7 x64 带有 Visual Studio 2010 Pr
  • Visual Studio 2010 中 applicationhost.config 的 IIS Express 路径

    有没有办法告诉 Visual Studio 2010 在启动 IIS Express 时对 config 参数使用什么值 使用 Process Explorer 我可以看到 iisexpress exe 进程由 Visual Studio
  • CUDA中x方向的索贝尔滤波器

    我正在尝试在每个像素的 x 方向上对灰度图像应用索贝尔滤波器并显示结果 X 方向索贝尔滤波器为 1 0 1 2 0 2 1 0 1 我没有得到所需的结果 有人可以指出我的错误吗 我正在尝试使用纹理 但我不太确定我是否正确使用了它 inclu
  • 如何以树形视图显示消息回复? Java 和休眠

    我有消息 需要显示十个 例如 第一个 根 回复以及对其自身的所有回复 并且它应该看起来像一棵树 标准消息和树状回复视图 你知道 所以 问题是 如何从数据库获取它 我正在使用休眠 据我所知 它将需要很多时间 递归地检索整个集合本身以及所有子树