NullPointerException at org.hibernate.ejb.criteria.path.AbstractPathImpl.get [duplicate]

和自甴很熟 提交于 2019-12-23 10:07:54

问题


This works fine:

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

but I change to :

 return  root.get(Campaign_.campState).get(CampState_.campId).in(campStatus).

And it throws exception:

edit for: NullPointerException at org.hibernate.ejb.criteria.path.AbstractPathImpl.get

  @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;
  }

回答1:


Given two queries operate to different attributes. Second query cannot be compiled, because CampState_ does not have attribute campId (Campaign_ does have such a attribute.

Query that is equivalent to first one with static metamodel is:

root.get(Campaign_.campState).get(CampState_.statusId).in(campStatus).



回答2:


check this answer.

seems like metamodel and class should be at the same package



来源:https://stackoverflow.com/questions/14554945/nullpointerexception-at-org-hibernate-ejb-criteria-path-abstractpathimpl-get

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!