如果我有一个类结构,看起来像下面(删除注释):
public class Person {
String store;
Swatch swatch;
Collection<Paint> paints;
}
public class Swatch {
String color;
}
public class Paint {
String color;
String store;
}
Store永远不会为空,它是Person和Paint之间使用的键。目标是匹配所有与Swatch具有相同颜色的Paint记录以及与Person相同的存储。但是,Swatch可能为空,或者它的color属性可能为空(在这两种情况下都返回与Person具有相同存储的所有油漆)。
是否有基于JPA或Hibernate的注释将在油漆集合上构造此查询?
我的结论是,这对于Hibernate注释来说要么是不可能的,要么可能只是不太明显。
我的解决方案相当hackish:在Person上,我有一个瞬态注释方法,它以编程方式过滤绘画。不太理想,因为它可能会强制执行额外的查询来获取Swatch实体。
我不会把这个标记为正确的,因为我认为Vineet Reynolds创建查询的答案在我提出的情况下可能是最合理的。然而,在我的实际场景中,查询更难实现,因为我认为未提及的因素与我的示例无关,提及它们会增加显着的复杂性。