org.hibernate.ejb.criteria.path.Abs​​tractPathImpl.get中的NullPointerException

sam*_*g88 6 java jpa predicate nullpointerexception criteria-api

这很好用:

 public Predicate toPredicate(Root<Campaign> root,
    CriteriaQuery<?> query, CriteriaBuilder cb) {
    return root.get("campState").get("statusId").in(campStatus);
}
Run Code Online (Sandbox Code Playgroud)

但我改为:

 return  root.get(Campaign_.campState).get(CampState_.campId).in(campStatus).
Run Code Online (Sandbox Code Playgroud)

它抛出异常:

编辑:org.hibernate.ejb.criteria.path.Abs​​tractPathImpl.get中的NullPointerException

  @StaticMetamodel(Campaign.class)
  public class Campaign_ {
  public static volatile SingularAttribute<Campaign, CampState> campState;
  public static volatile SingularAttribute<Campaign, Long> campId;
  }

  @StaticMetamodel(CampState.class)
  public class CampState_ {
  public static volatile SingularAttribute<CampState, String> statusId;
  }

  Campaign.class
  @ManyToOne(cascade = {CascadeType.REFRESH, CascadeType.MERGE})
  @JoinColumn(name = "camp_status")
  public CampState getCampState() {
    return campState;
  }

  public void setCampState(CampState campState) {
    this.campState = campState;
  }
Run Code Online (Sandbox Code Playgroud)

Mik*_*unu 0

给定两个查询操作不同的属性。第二个查询无法编译,因为 CampState_ 没有属性campId(Campaign_ 确实有这样的属性。

与第一个静态元模型等效的查询是:

root.get(Campaign_.campState).get(CampState_.statusId).in(campStatus).
Run Code Online (Sandbox Code Playgroud)