Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save smithh032772/4152792 to your computer and use it in GitHub Desktop.
Save smithh032772/4152792 to your computer and use it in GitHub Desktop.
OrderCustomerLeader relationship to ORDERS table is always NULL
/* To prevent this NullPointerException, I had to check
if order.getOrderCustomerLeaders() != null and not empty;
I did not have to do this prior to using Batoo JPA
*/
// customer
if (order.getCustomerId() != null) {
customerNbr = "Customer" + nbsp + "#" + nbsp + order.getCustomerId().getCustomerId();
customer = order.getCustomerId().getCustomerName();
// order customer leader
if (order.getOrderCustomerLeaders() != null && !order.getOrderCustomerLeaders().isEmpty()) {
List<OrderCustomerLeader> list = new ArrayList<>(order.getOrderCustomerLeaders());
if (list != null && list.size() > 0) {
OrderCustomerLeader customerLeader = list.get(0);
String leader = customerLeader.getLeaderPointOfContact().getPointOfContactName();
if (leader != null) customer += " (" + leader + ")";
}
}
}
Nov 27, 2012 1:09:47 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/mcmsweb] threw exception [javax.el.ELException: java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at java.util.ArrayList.<init>(ArrayList.java:151)
at jsf.orders.OrderDisplayUtil.getOrderTitle(OrderDisplayUtil.java:809)
at jsf.orders.pf_OrdersController.getOrderNumberAndLabel(pf_OrdersController.java:4363)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.webbeans.intercept.InterceptorHandler.invoke(InterceptorHandler.java:322)
at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:117)
at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:108)
at jsf.orders.pf_OrdersController_$$_javassist_13.getOrderNumberAndLabel(pf_OrdersController_$$_javassist_13.java)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at javax.el.BeanELResolver.invokeMethod(BeanELResolver.java:737)
at javax.el.BeanELResolver.invoke(BeanELResolver.java:467)
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:246)
at de.odysseus.el.tree.impl.ast.AstMethod.eval(AstMethod.java:91)
at de.odysseus.el.tree.impl.ast.AstMethod.eval(AstMethod.java:100)
at de.odysseus.el.tree.impl.ast.AstEval.eval(AstEval.java:51)
at de.odysseus.el.tree.impl.ast.AstNode.getValue(AstNode.java:30)
at de.odysseus.el.TreeValueExpression.getValue(TreeValueExpression.java:122)
at org.apache.webbeans.el.WrappedValueExpression.getValue(WrappedValueExpression.java:68)
at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:96)
at javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:249)
at javax.faces.component.UIOutput.getValue(UIOutput.java:67)
at org.apache.myfaces.shared.renderkit.RendererUtils.getValue(RendererUtils.java:491)
at org.apache.myfaces.shared.renderkit.RendererUtils.getStringValue(RendererUtils.java:334)
at org.apache.myfaces.shared.renderkit.html.HtmlTextRendererBase.renderOutput(HtmlTextRendererBase.java:92)
at org.apache.myfaces.shared.renderkit.html.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:79)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:663)
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:543)
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:539)
at org.primefaces.component.datatable.DataTableRenderer.encodeRegularCell(DataTableRenderer.java:794)
at org.primefaces.component.datatable.DataTableRenderer.encodeRow(DataTableRenderer.java:746)
at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:649)
at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:229)
at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:201)
at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:78)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:663)
at javax.faces.component.UIData.encodeEnd(UIData.java:1699)
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:543)
at org.apache.myfaces.shared.renderkit.RendererUtils.renderChildren(RendererUtils.java:693)
at org.apache.myfaces.shared.renderkit.html.HtmlGroupRendererBase.encodeEnd(HtmlGroupRendererBase.java:115)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:663)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:62)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:46)
at org.primefaces.extensions.component.layout.LayoutPaneRenderer.encodeBegin(LayoutPaneRenderer.java:141)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:585)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:55)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:46)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:60)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:46)
at org.primefaces.component.outputpanel.OutputPanelRenderer.encodeEnd(OutputPanelRenderer.java:46)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:663)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:62)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:46)
at org.primefaces.extensions.component.layout.LayoutPaneRenderer.encodeBegin(LayoutPaneRenderer.java:141)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:585)
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:515)
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:539)
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:539)
at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:539)
at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1981)
at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:285)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:116)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:148)
at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at pf.LoginFilter.doFilter(LoginFilter.java:194)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
CREATE TABLE order_customer_leader (
order_id INTEGER NOT NULL,
customer_id INTEGER NOT NULL,
leader_point_of_contact_id INTEGER NOT NULL,
CONSTRAINT order_customer_leader_pk PRIMARY KEY ( order_id, customer_id, leader_point_of_contact_id )
);
ALTER TABLE order_customer_leader ADD CONSTRAINT order_customer_leader_fk_orders FOREIGN KEY ( order_id ) REFERENCES orders ( order_id );
ALTER TABLE order_customer_leader ADD CONSTRAINT order_customer_leader_fk_customer FOREIGN KEY ( customer_id ) REFERENCES customer ( customer_id );
ALTER TABLE order_customer_leader ADD CONSTRAINT order_customer_leader_fk_point_of_contact FOREIGN KEY ( leader_point_of_contact_id ) REFERENCES point_of_contact ( point_of_contact_id );
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jpa.entities;
import java.io.Serializable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author Administrator
*/
@Entity
@Table(name = "ORDER_CUSTOMER_LEADER")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "OrderCustomerLeader.findAll", query = "SELECT o FROM OrderCustomerLeader o"),
@NamedQuery(name = "OrderCustomerLeader.findByOrderId", query = "SELECT o FROM OrderCustomerLeader o WHERE o.orderCustomerLeaderPK.orderId = :orderId"),
@NamedQuery(name = "OrderCustomerLeader.findByCustomerId", query = "SELECT o FROM OrderCustomerLeader o WHERE o.orderCustomerLeaderPK.customerId = :customerId"),
@NamedQuery(name = "OrderCustomerLeader.findByLeaderPointOfContactId", query = "SELECT o FROM OrderCustomerLeader o WHERE o.orderCustomerLeaderPK.leaderPointOfContactId = :leaderPointOfContactId"),
// 2011-08-02 added removeAll
@NamedQuery(name = "OrderCustomerLeader.removeAll", query = "DELETE FROM OrderCustomerLeader o")})
public class OrderCustomerLeader implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected OrderCustomerLeaderPK orderCustomerLeaderPK;
@JoinColumn(name = "LEADER_POINT_OF_CONTACT_ID", referencedColumnName = "POINT_OF_CONTACT_ID", insertable = false, updatable = false)
@ManyToOne(optional = false)
private PointOfContact leaderPointOfContact;
@JoinColumn(name = "ORDER_ID", referencedColumnName = "ORDER_ID", insertable = false, updatable = false)
@ManyToOne(optional = false)
private Orders orders;
@JoinColumn(name = "CUSTOMER_ID", referencedColumnName = "CUSTOMER_ID", insertable = false, updatable = false)
@ManyToOne(optional = false)
private Customer customer;
public OrderCustomerLeader() {
}
public OrderCustomerLeader(OrderCustomerLeaderPK orderCustomerLeaderPK) {
this.orderCustomerLeaderPK = orderCustomerLeaderPK;
}
public OrderCustomerLeader(int orderId, int customerId, int pointOfContactId) {
this.orderCustomerLeaderPK = new OrderCustomerLeaderPK(orderId, customerId, pointOfContactId);
}
public OrderCustomerLeaderPK getOrderCustomerLeaderPK() {
return orderCustomerLeaderPK;
}
public void setOrderCustomerLeaderPK(OrderCustomerLeaderPK orderCustomerLeaderPK) {
this.orderCustomerLeaderPK = orderCustomerLeaderPK;
}
public PointOfContact getLeaderPointOfContact() {
return leaderPointOfContact;
}
public void setLeaderPointOfContact(PointOfContact leaderPointOfContact) {
this.leaderPointOfContact = leaderPointOfContact;
}
public Orders getOrders() {
return orders;
}
public void setOrders(Orders orders) {
this.orders = orders;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
@Override
public int hashCode() {
int hash = 0;
hash += (orderCustomerLeaderPK != null ? orderCustomerLeaderPK.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof OrderCustomerLeader)) {
return false;
}
OrderCustomerLeader other = (OrderCustomerLeader) object;
if ((this.orderCustomerLeaderPK == null && other.orderCustomerLeaderPK != null) || (this.orderCustomerLeaderPK != null && !this.orderCustomerLeaderPK.equals(other.orderCustomerLeaderPK))) {
return false;
}
return true;
}
@Override
public String toString() {
return "jpa.entities.OrderCustomerLeader[ orderCustomerLeaderPK=" + orderCustomerLeaderPK + " ]";
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jpa.entities;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.validation.constraints.NotNull;
/**
*
* @author Administrator
*/
@Embeddable
public class OrderCustomerLeaderPK implements Serializable {
@Basic(optional = false)
@NotNull
@Column(name = "ORDER_ID")
private int orderId;
@Basic(optional = false)
@NotNull
@Column(name = "CUSTOMER_ID")
private int customerId;
@Basic(optional = false)
@NotNull
@Column(name = "LEADER_POINT_OF_CONTACT_ID")
private int leaderPointOfContactId;
public OrderCustomerLeaderPK() {
}
public OrderCustomerLeaderPK(int orderId, int customerId, int leaderPointOfContactId) {
this.orderId = orderId;
this.customerId = customerId;
this.leaderPointOfContactId = leaderPointOfContactId;
}
public int getOrderId() {
return orderId;
}
public void setOrderId(int orderId) {
this.orderId = orderId;
}
public int getCustomerId() {
return customerId;
}
public void setCustomerId(int customerId) {
this.customerId = customerId;
}
public int getLeaderPointOfContactId() {
return leaderPointOfContactId;
}
public void setLeaderPointOfContactId(int leaderPointOfContactId) {
this.leaderPointOfContactId = leaderPointOfContactId;
}
@Override
public int hashCode() {
int hash = 0;
hash += (int) orderId;
hash += (int) customerId;
hash += (int) leaderPointOfContactId;
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof OrderCustomerLeaderPK)) {
return false;
}
OrderCustomerLeaderPK other = (OrderCustomerLeaderPK) object;
if (this.orderId != other.orderId) {
return false;
}
if (this.customerId != other.customerId) {
return false;
}
if (this.leaderPointOfContactId != other.leaderPointOfContactId) {
return false;
}
return true;
}
@Override
public String toString() {
return "jpa.entities.OrderCustomerLeaderPK[ orderId=" + orderId + ", customerId=" + customerId + ", leaderPointOfContactId=" + leaderPointOfContactId + " ]";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment