2011-08-10 72 views
1

如果我有一类结构如下所示(注释去掉):如何用Hibernate注释有条件地映射集合?

public class Person { 
    String store; 

    Swatch swatch; 

    Collection<Paint> paints; 
} 

public class Swatch { 
    String color; 
} 

public class Paint { 
    String color; 

    String store; 
} 

店是从来没有空,是人与涂料之间使用的密钥。我们的目标是将所有Paint记录与具有与Person相同商店的Swatch相同的颜色进行匹配。但是,Swatch可能为null,或者其颜色属性可能为null(在两种情况下都会返回与Person具有相同商店的所有Paints)。

是否有JPA或Hibernate基于注解,将构建在油漆收集此查询?

+0

这听起来更像是您应该构建的查询的工作。 –

回答

0

我认为,这要么是与Hibernate的注解不可能的或者只是不很明显。

我的解决方案是相当的hackish:对的人,我有哪些程序过滤油漆瞬态批注的方法。不太理想,因为它可能会强制执行额外的查询来获取Swatch实体。

我不会记住这是正确的,因为我认为雷诺的Vineet的回答创建一个查询,可能是最合理的在我介绍的情况。但是,由于我认为与我的示例无关的未提到的因素,因此在我的实际情况下查询更难实施,并提及它们会增加显着的复杂性。