Java 如何使用Hibernate注释有条件地映射集合?

Java 如何使用Hibernate注释有条件地映射集合?,java,hibernate,orm,hibernate-annotations,Java,Hibernate,Orm,Hibernate Annotations,如果我的类结构如下所示(注释已删除): 公共类人物{ 字符串存储; 样本样本; 收集颜料; } 公共类样本{ 字符串颜色; } 公共级涂料{ 字符串颜色; 字符串存储; } Store从不为null,是Person和Paint之间使用的密钥。目标是将所有与样本颜色相同的绘制记录与此人所在的商店进行匹配。但是,样例可能为null或其颜色属性可能为null(在这两种情况下,返回与此人具有相同存储的所有油漆) 是否有基于JPA或Hibernate的注释将在Paint集合上构造此查询?我得出结论,这要

如果我的类结构如下所示(注释已删除):

公共类人物{
字符串存储;
样本样本;
收集颜料;
}
公共类样本{
字符串颜色;
}
公共级涂料{
字符串颜色;
字符串存储;
}
Store从不为null,是Person和Paint之间使用的密钥。目标是将所有与样本颜色相同的绘制记录与此人所在的商店进行匹配。但是,样例可能为null或其颜色属性可能为null(在这两种情况下,返回与此人具有相同存储的所有油漆)


是否有基于JPA或Hibernate的注释将在Paint集合上构造此查询?

我得出结论,这要么是Hibernate注释不可能实现的,要么可能只是不太明显

我的解决方案相当老套:我有一个临时的带注释的方法,可以通过编程过滤绘画。不太理想,因为它可能会强制执行附加查询以获取样例实体


我不认为这是正确的,因为我认为Vineet Reynolds创建查询的答案在我介绍的案例中可能是最合理的。然而,在我的真实场景中,查询更难实现,因为我认为未提及的因素与我的示例无关,提及这些因素会增加很大的复杂性。

这听起来更像是一个需要构建的查询作业。
public class Person {
  String store;

  Swatch swatch;

  Collection<Paint> paints;
}

public class Swatch {
  String color;
}

public class Paint {
  String color;

  String store;
}