【发布时间】:2026-02-17 09:10:01
【问题描述】:
我有一个具有多个属性的模型。属性可以是原始的(字符串)或复杂的(对象)。用户可以对每个原始属性进行查询。我想知道是否有一种简单的方法来动态构建查询。我使用 Java 和 Hibernate。
型号
public class Model {
String prop1;
Point prop2;
List<Shape> prop3;
}
Point 和Shape 是可以包含原语或对象的对象。查询的一个示例是 prop1 = "A" 且坐标为 x = 3 和 y = 8 且其中一个形状为圆形的所有实例。
prop1 = "A" and prop2.x = 3 and prop2.y and prop3.get(i).type = "Circle";我们将不得不迭代 prop3 的所有实例。
我的第一个想法是不可维护且效率低下。它包括对所有原始属性进行查询,然后合并结果。
- 获取 prop1 = "A" 的所有实例
- 获取 prop2.x = 3 的所有实例 和prop3 = y;
- 获取所有实例,其中之一 Shape.type = "圆形";
- 获取所有 3 个集合的交集
是否有任何现有的库或算法可以以更好(更智能)的方式解决此问题?
谢谢
【问题讨论】:
-
您想查询Shape的“Java类型”还是有该类型的字段?
-
与我的真实模型相比,我的示例非常简单,但条件查询正是我想要的。