gpt4 book ai didi

Java, hibernate transient 字段

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

我有域对象 Item,其中包含字段 id、名称、parentItem 和类别( boolean 值)。所以我在数据库中插入值,例如:

id名称parentItem类别
1 工具 NULL 1
2 电动工具 1 1
3 小工具 2 1
4 实际工具最终子项 3 0

所以实际项目位于类别/路径“工具/电动工具/小工具”

所以我需要通过categoryName/categoryPath实现惰性过滤器搜索。例如:如果用户在数据表过滤器“电动”中输入,我需要返回“电动工具”类别中的所有项目以及子类别中的所有项目(在本例中为小型工具和所有其他工具,如果存在)。

所以目前我在java域对象@Transient字段中使用递归来获取项目路径。但我无法通过 transient 字​​段进行搜索。我的意思是我无法在数据库中实现搜索,因为该字段是:
1. transient
2.使用递归,如果我需要在其他数据库版本上部署应用程序,我将不得不在数据库上重写递归sql或其他东西。我不喜欢这个

有人能给我一些聪明、独特的解决方案吗?任何想法、建议表示赞赏。谢谢!

最佳答案

这个问题看起来非常相似:HQL recursion, how do I do this?

简而言之:你不能在 HQL 中进行递归。您最好的选择是:

  • 编写一个 native 查询来执行此操作(是的,您必须在每次数据库移动时重写它,因为递归查询不是标准 SQL)
  • 使用连接列在对象中包含父级/子级,并遍历和过滤内存中的产品树(由于预加载所有内容,因此使用更多内存,但只访问数据库一次)
  • 如果您知道您的树不太深,请进行多次查询。 (节省内存,但数据库工作量很大)

关于Java, hibernate transient 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22916912/

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