为了避免一遍又一遍地重新创建动态查询的同一部分,我将构建一次主要部分,然后在应用程序的不同部分重用这部分。由于构建查询有点涉及(请参阅问题jOOQ: best way to get aliased fields (from #as(alias, aliasFunction))的一个方面),这应该有利于性能...
不幸的是,我不得不意识到构建器模式中的不同“步骤”不会返回修改后的副本,而是修改底层状态。因此,我一直在寻找一种方法来创建特定“步骤”(例如SelectWhereStep)的不可变副本,每次我需要时从该副本初始化并随后修改(Select-)查询。不幸的是,我无法确定实现这一目标的任何(“合法”)方式。
可以做到吗?如果没有,最好的选择是什么?