2013-06-25 62 views
2

如何獲得「Specification」「toPredicate」方法的類型轉換?具有繼承性的彈簧規格

例:

@Entity 
public class Empresa{...} 

@Entity 
public class Cliente extends Empresa{ 
    private Integer cod; 
    ... 
} 
@Entity 
public class Vinculo{ 
    private Empresa emp1; 
    private Empresa emp2; 
} 


public static Specification<Vinculo> serieEq(final Integer cod) { 
    return new Specification<Vinculo>() { 
    @Override 
     public Predicate toPredicate(Root<Vinculo> root, CriteriaQuery<?> query, CriteriaBuilder cb) { 
      return cb.equal(root.join("emp2").get("cod"), cod); 
    }; 
} 

注意, 「鱈魚」 是僅在Cliente存在。

非常感謝,

回答

0

您可以使用as()API。這將對一些JPA提供者有效。

+0

它適用於EclipseLink,但不適用於Hibernate。這裏有一個更詳細的答案:http://stackoverflow.com/questions/6427126/polymorphic-criteriaquery-without-inverse-relationship –