NPE beim Persistieren einer Entität

Raphalon

Aktives Mitglied
Beim Persistieren eines neues Customer wird eine NPE geworfen und ich finde den Grund nicht. Warum wird hier toString aufgerufen? Wenn ich im Customer das "getId()" aus der toString()-Methode nehme, dann geht es. Aber das kann nicht die Ursache des Problems sein.

Java:
java.lang.NullPointerException
	at de.org.grp.domain.Customer.getId(Customer.java:35)
	at de.org.grp.domain.Customer.toString(Customer.java:60)
	at java.text.MessageFormat.subformat(MessageFormat.java:1246)
	at java.text.MessageFormat.format(MessageFormat.java:836)
	at java.text.Format.format(Format.java:140)
	at java.text.MessageFormat.format(MessageFormat.java:812)
	at org.eclipse.persistence.internal.localization.EclipseLinkLocalization.buildMessage(EclipseLinkLocalization.java:77)
	at org.eclipse.persistence.internal.localization.TraceLocalization.buildMessage(TraceLocalization.java:30)
	at org.eclipse.persistence.logging.AbstractSessionLog.formatMessage(AbstractSessionLog.java:852)
	at org.eclipse.persistence.logging.JavaLog.internalLog(JavaLog.java:275)
	at org.eclipse.persistence.logging.JavaLog.log(JavaLog.java:261)
	at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:3100)
	at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:4218)
	at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:4190)
	at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:4166)
	at org.eclipse.persistence.internal.sessions.AbstractSession.log(AbstractSession.java:4088)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.logDebugMessage(UnitOfWorkImpl.java:5527)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNotRegisteredNewObjectForPersist(UnitOfWorkImpl.java:4220)
	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.registerNotRegisteredNewObjectForPersist(RepeatableWriteUnitOfWork.java:513)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4176)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:440)
	at com.sun.enterprise.container.common.impl.EntityManagerWrapper.persist(EntityManagerWrapper.java:269)
	at de.org.grp.sl.CustomerService.createCustomer(CustomerService.java:29)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
	at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
	at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388)
	at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
	at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
	at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
	at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:42)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
	at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
	at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
	at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
	at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
	at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
	at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370)
	at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360)
	at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348)
	at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
	at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:89)
	at $Proxy252.createCustomer(Unknown Source)
	at de.org.grp.sl.__EJB31_Generated__CustomerService__Intf____Bean__.createCustomer(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:267)
	at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52)
	at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:137)
	at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:263)
	at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:110)
	at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56)
	at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:105)
	at de.org.grp.sl.CustomerService$Proxy$_$$_Weld$Proxy$.createCustomer(CustomerService$Proxy$_$$_Weld$Proxy$.java)
	at de.org.grp.back.Initializer.executeCustomerActivities(Initializer.java:43)
	at de.org.grp.back.Initializer$Proxy$_$$_WeldClientProxy.executeCustomerActivities(Initializer$Proxy$_$$_WeldClientProxy.java)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.sun.el.parser.AstValue.invoke(AstValue.java:254)
	at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302)
	at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:39)
	at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:680)
Java:
package de.org.grp.back;

import de.org.grp.domain.Customer;
import de.org.grp.sl.CustomerService;
import javax.enterprise.inject.Model;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import java.util.Collection;

@Model
public class Initializer {

    @Inject
    CustomerService custService;

    public void executeCustomerActivities() {
        Customer customer = null;
        customer = custService.createCustomer("Michael Green", 54321);
}
Java:
package de.org.grp.sl;
import de.org.grp.domain.Customer;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import java.util.Collection;

@Stateless
public class CustomerService {

    @PersistenceContext(unitName = "CustomerService")
    private EntityManager em;

    public Customer createCustomer(String name, long salary) {
        Customer customer = new Customer();
        customer.setName(name);
        customer.setSalary(salary);
        em.persist(customer);
        return customer;
    }

}
[XML]<persistence-unit name="CustomerService" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/DerbyJPACertDB</jta-data-source>
<properties>
<property name="eclipselink.target-server" value="SunAS9"/>
<property name="eclipselink.target-database"
value="org.eclipse.persistence.platform.database.DerbyPlatform"/>
<property name="eclipselink.logging.level" value="ALL"/>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
<property name="eclipselink.ddl-generation.output-mode" value="both"/>
</properties>
</persistence-unit>
</persistence>[/XML]
 

Raphalon

Aktives Mitglied
Die Entität Customer sieht folgendermaßen aus.

Java:
package de.org.grp.domain;
import javax.persistence.*;
import java.io.Serializable;

@Entity
@NamedQuery(name = "findCustomerByName",
        query = "SELECT c FROM Customer c WHERE c.name = :nameParam")
public class Customer implements Serializable {

    @Id
    @TableGenerator(name="CustIdGen",
            table="ID_CUSTOMER",
            pkColumnName="GEN_NAME",
            valueColumnName="GEN_VAL")
    @GeneratedValue(generator="CustIdGen")
    private Long id;

    @Column
    private String name;

    @Column
    private long salary;

    public Customer() { }

    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public long getSalary() {
        return salary;
    }
    public void setSalary(long salary) {
        this.salary = salary;
    }
    @Override
    public String toString() {
        return "Customer id: " + getId() + " name: " + getName() + " salary: " + getSalary();
    }
}
 

Raphalon

Aktives Mitglied
Ja, mit Long läuft es. Kannst Du mir noch erläutern, warum ein Primitive an dieser Stelle einen solchen Fehler hervorruft?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Hibernate Collection Mapping - Fehler beim Updaten der DB Data Tier 0
N Problem beim initialisieren des Caches Data Tier 0
R Beim deployen und initialisieren der DB werden Umlaute nicht gespeichert Data Tier 5
M Problem beim Laden von Objekten, die von anderen Applikationen in eine DB eingefügt wurden Data Tier 5
T JPA2/Hibernate: Many-to-Many-Relation wird u.a. beim löschen nicht aktualisiert Data Tier 14
S Problem beim Insert mit Hibernate Data Tier 9
N Problem beim session.flush(); Data Tier 17
A Probleme beim deployen Data Tier 4
T DB Daten beim Anlegen neuer EntityManagerFactory verloren Data Tier 3
O JPA Persistieren mit JTA funktioniert nicht Data Tier 0
J Arrays persistieren mit JPA Data Tier 9
D viele jpa-entitäten "persistieren" Data Tier 14
L JSP Mit Java-Daten von einer Webseite zu ziehen? Data Tier 5
D JPA Entities mit Proxies ausserhalb einer Session (Lazy Loading) Data Tier 0
E JPA Session.delete einer Entity wird nicht ausgeführt Data Tier 2
T JPA Aufbau einer Webapplikation mit JEE Data Tier 2
C Businessmethoden in einer Entität zum bidirektionalen Speichern? Data Tier 2
aze Hibernate Entfernen aus einer Collection soll zum Entfernen einer Beziehung führen Data Tier 3
S (Hibernate) Mapping einer Datenbanktabelle mit mehreren Fremdschlüssel Data Tier 7
M JPA Query: Kann ich Objekte einer Oberklasse über Objekte der Unterklassen abfragen? Data Tier 5
G JPA/ Eclipselink: (Alte) Kopie einer Entity? Data Tier 6
M EJBQL: Item aus einer Collection(ManyToOne) löschen Data Tier 7
N Mapping einer 1:n in Hibernate Data Tier 11

Ähnliche Java Themen

Neue Themen


Oben