Ниже приведен метод DAO, повышающий npe: на равных условиях:
Код: Выделить всё
public AuditAction findAction(Long organizationId, String actionClass, String actionName) throws Exception {
CriteriaBuilder builder = getCriteriaBuilder();
CriteriaQuery criteria = builder.createQuery(AuditAction.class);
Root root = criteria.from(AuditAction.class);
Predicate filter = builder.equal(root.get(AuditAction_.organization), organizationId);
filter = builder.and(filter, builder.equal(root.get(AuditAction_.actionClassName), actionClass));
filter = builder.and(filter, builder.equal(root.get(AuditAction_.actionName), actionName));
criteria.where(filter);
TypedQuery q = createQuery(criteria);
List results = q.getResultList();
return results != null && results.size() > 0 ? results.get(0) : null;
}
Код: Выделить всё
Audit error!: java.lang.NullPointerException: Cannot invoke "Object.getClass()" because "value" is null
at [email protected]//org.hibernate.type.descriptor.java.spi.EntityJavaType.isInstance(EntityJavaType.java:56)
at [email protected]//org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder.isInstance(SqmCriteriaNodeBuilder.java:1814)
at [email protected]//org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder.valueParameter(SqmCriteriaNodeBuilder.java:1856)
at [email protected]//org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder.value(SqmCriteriaNodeBuilder.java:1785)
at [email protected]//org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder.equal(SqmCriteriaNodeBuilder.java:2131)
at [email protected]//org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder.equal(SqmCriteriaNodeBuilder.java:192)
at deployment.HIS.war//it.gpi.his.be.ejb.entities.audit.dao.AuditActionDao.findActiveAction(AuditActionDao.java:72)
at deployment.HIS.war//it.gpi.his.be.ejb.sessions.AuditSessionBean.handleAuditMessage(AuditSessionBean.java:327)
Я искал в Интернете документацию, чтобы найти критические изменения, но ничего не нашел
Подробнее здесь: https://stackoverflow.com/questions/788 ... eria-query