这工作正常:
public Predicate toPredicate(Root<Campaign> root,
CriteriaQuery<?> query, CriteriaBuilder cb) {
return root.get("campState").get("statusId").in(campStatus);
}
但我改为:</p>
return root.get(Campaign_.campState).get(CampState_.campId).in(campStatus).
并抛出异常:</p>
编辑: org.hibernate.ejb.criteria.path.AbstractPathImpl.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;
}