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

时间:2011-08-10 20:40:38

标签: java hibernate orm hibernate-annotations

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

public class Person {
  String store;

  Swatch swatch;

  Collection<Paint> paints;
}

public class Swatch {
  String color;
}

public class Paint {
  String color;

  String store;
}

Store永远不会为null,是Person和Paint之间的关键。目标是将所有Paint记录与Swatch相同的颜色匹配,并使用与Person相同的存储。但是,Swatch可能为null或其color属性可能为null(在两种情况下都返回与Person具有相同存储的所有Paints)。

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

1 个答案:

答案 0 :(得分:0)

我的结论是,使用Hibernate注释要么不可能,要么就是不太明显。

我的解决方案是相当hackish:在Person上我有一个Transient注释方法,它以编程方式过滤绘图。不太理想,因为它可能会强制额外的查询来获取Swatch实体。

我不认为这是正确的,因为我认为Vineet Reynolds&#39;在我提出的情况下,创建查询的答案可能是最合理的。然而,由于我认为与我的例子无关的未提及的因素,在我的真实场景中难以实现查询,并且提及它们会增加显着的复杂性。