2016-08-19 65 views
0

是否有可能基于状态列以某种方式定义关系?基于状态列的JPA加入?

Table A: id, valueA 
Table B: id, refIdA, valueB, status 

所以在A类中,我只想获取状态处于活动状态的B。拿起em.find(id, A.class)。有没有办法在实体内定义它?

@Entity 
public class A { 
    ... 
    @OneToMany 
    @JoinColumn(name = "refIdA") 
    private List<B> b; 
    ... 
} 
+0

你不能这样做与JPA。你总是加入FK。回落到执行特价失去可移植性 –

回答

0

对于Eclipse Link,一个解决方案是使用@AdditionalCriteria。但是,此注释不适用于会员。但对于我的用例来说没问题。因此,注释B过滤所有BStatus.ACTIVE

@Entity 
@AdditonalCriteria("this.status = com.example.Status.ACTIVE") 
public class B { 
    ... 
} 

感谢Peter L

0

尝试@Where。网站上有很多关于如何使用它的例子,例如:How to use @Where in JPA Hibernate

+0

谢谢,这导致我进入正确的方向。 '@ Where'在EclipseLink中不可用,但可以通过@ @ AdditionalCriteria'来实现 –