2012-12-06 3 views
0

는 여기 NullPointerExpception을 반환 EntityManagerPersist() 방법을 사용에 문제가 그 내 코드 :봄 최대 절전 모드 JPA EntityManager.Persist() NullPointerException이

@Repository("chainDao") 
public class ChainDaoImpl implements ChainDao{ 

    private EntityManager em; 

    @PersistenceContext(unitName="hibernatePersistenceUnit") 
    public void setEntityManager(EntityManager em) { 
    this.em = em; 
    } 

    public int saveChain(Chain chain) { 
     em.persist(chain); 
     return 0; 
    } 
} 

Expcetion 여기의 내 em.persist(chain)

에 맞춰 제공 persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> 

<persistence-unit name="hibernatePersistenceUnit" transaction-type="RESOURCE_LOCAL"> 
<properties> 
<property name="hibernate.hbm2ddl.auto" value="none" /> 
</properties> 
</persistence-unit> 

</persistence> 

및조각3210

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
destroy-method="close" 
p:driverClass="${database.driver}" 
p:jdbcUrl="${database.url}" 
p:user="${database.user}" 
p:password="${database.password}" 
p:acquireIncrement="5" 
p:idleConnectionTestPeriod="60" 
p:maxPoolSize="100" 
p:maxStatements="50" 
p:minPoolSize="10" /> 
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" > 
<property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml"></property> 
<property name="persistenceUnitName" value="hibernatePersistenceUnit" /> 
<property name="dataSource" ref="dataSource"/> 
<property name="jpaVendorAdapter"> 
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" > 
<property name="showSql" value="true"/> 
</bean> 
</property> 
</bean> 

추적 :

java.lang.NullPointerException: null 
    at pl.postgresql.jpa.dao.ChainDaoImpl.saveCaChain(ChainDaoImpl.java:33) ~[CaChainDaoImpl.class:na] 
    at pl.postgresql.jpa.service.StorageServiceImpl.addChain(StorageServiceImpl.java:50) ~[StorageServiceImpl.class:na] 
    at pl.camel.jms.service.InputDatabaseServiceImpl.inputChain(InputDatabaseServiceImpl.java:48) ~[InputDatabaseServiceImpl.class:na] 
    at pl.camel.jms.connector.EndpointHelper.run(EndpointHelper.java:49) ~[EndpointHelper.class:na] 
    at pl.ws.spring.endpoint.CaEndpoint.getCAChain(CaEndpoint.java:63) ~[CaEndpoint.class:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_09] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_09] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_09] 
    at java.lang.reflect.Method.invoke(Method.java:601) ~[na:1.7.0_09] 
    at org.springframework.ws.server.endpoint.MethodEndpoint.invoke(MethodEndpoint.java:134) ~[spring-ws-core-2.1.1.RELEASE.jar:na] 
    at org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter.invokeInternal(DefaultMethodEndpointAdapter.java:229) ~[spring-ws-core-2.1.1.RELEASE.jar:na] 
    at org.springframework.ws.server.endpoint.adapter.AbstractMethodEndpointAdapter.invoke(AbstractMethodEndpointAdapter.java:53) ~[spring-ws-core-2.1.1.RELEASE.jar:na] 
    at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:233) [spring-ws-core-2.1.1.RELEASE.jar:na] 
    at org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:173) [spring-ws-core-2.1.1.RELEASE.jar:na] 
    at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:88) [spring-ws-core-2.1.1.RELEASE.jar:na] 
    at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:59) [spring-ws-core-2.1.1.RELEASE.jar:na] 
    at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:221) [spring-ws-core-2.1.1.RELEASE.jar:na] 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) [spring-webmvc-3.1.2.RELEASE.jar:3.1.2.RELEASE] 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) [spring-webmvc-3.1.2.RELEASE.jar:3.1.2.RELEASE] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) [servlet-api.jar:na] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) [servlet-api.jar:na] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) [catalina.jar:7.0.30.A] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) [catalina.jar:7.0.30.A] 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) [catalina.jar:7.0.30.A] 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) [catalina.jar:7.0.30.A] 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) [catalina.jar:7.0.30.A] 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) [catalina.jar:7.0.30.A] 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) [catalina.jar:7.0.30.A] 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) [catalina.jar:7.0.30.A] 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) [catalina.jar:7.0.30.A] 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) [catalina.jar:7.0.30.A] 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) [tomcat-coyote.jar:7.0.30.A] 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) [tomcat-coyote.jar:7.0.30.A] 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) [tomcat-coyote.jar:7.0.30.A] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [na:1.7.0_09] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [na:1.7.0_09] 
    at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09] 

모든 단서 내가 무엇을 놓치고?

+0

dataSource는 어디에 정의되어 있습니까? 당신이 그것을 참조했기 때문입니다. – kinaesthesia

+0

내 게시물을 편집했습니다 – Grzzzzzzzzzzzzz

답변

2

삽입 된 엔티티 관리자는 단지 프록시 일뿐입니다. 실제 엔티티 관리자 구현은 엔티티 관리자를 사용하는 메소드와 연관된 주석 인 @Transactional에있는 전달 속성 값을 기반으로 런타임에 주입됩니다. 따라서 다음과 같이 saveChain 메서드를 @Transactional 주석과 연결하십시오.

이 주석의 문서를 읽고 유스 케이스 속성과 관련된 값으로 주석 속성을 설정하는 것이 좋습니다.

편집는 :

스프링의 DI 프레임 워크는 속성 이름이 em 그대로 세터 setEntityManager을 따기되지 않을 것으로 보인다. em의 이름을 entityManager 또는 설정자 setEntityManager ~ setEm으로 바꿀 수도 있고 @PersistenceContext 주석을 속성으로 이동하여 시도 할 수도 있습니다.

+0

팁에 대해 Vikdor에게 감사드립니다. 말씀 드린대로 작동하지 않았습니다 ... – Grzzzzzzzzzzzzz

+0

질문에 NPE 스택 트레이스를 인쇄 해 주시겠습니까? – Vikdor

+0

게시물이 수정되었습니다. – Grzzzzzzzzzzzzz

관련 문제