2012-12-11 8 views
2

엔티티를 저장하려고 할 때 오류가 발생합니다. dbunit를 사용하여 단위 테스트를 실행할 때가 아니라 내 서버를 부팅했을 때만이 오류가 발생합니다.null 엔티티는 org.hibernate.event.def.EventCache가 지원하지 않는 것은 무엇입니까?

연결을 저장하려고합니다. 내 단위 테스트는 수동으로 테스트 할 때 발생하는 것과 동일한 조건이어야합니다. 관계가 없던 관계의 한쪽 끝에 새로운 엔티티를 추가하려고합니다.

단위 테스트에서 HSQLDB를 사용하고 있으며 웹 응용 프로그램이 SQL Server를 사용하고 있습니다.

내가 수행 한 검색 결과가 유익한 것으로 입증되지 않았습니다. 메시지에 대한 설명은 매우 유용합니다. 여기

는 (잘 작동하는!) 테스트 케이스입니다 : 여기
@Test 
     @DatabaseSetup(value="MobileWebsiteTest.saveMobilewebsiteMobilecolorswatchmapuserdefined_NewUserSwatch.xml", type=DatabaseOperation.REFRESH) 
    public void saveMobilewebsiteMobilecolorswatchmapuserdefined_NewUserSwatch() { 
     // given 
     Integer mobileWebsiteId = 569; 
     Mobilecolorswatchmapuserdefined expected = MobilecolorswatchmapuserdefinedBuilder.init().build(); 

     // when 
     Mobilewebsite result = service.saveMobilewebsiteMobilecolorswatchmapuserdefined(mobileWebsiteId, expected); 

     // then 
     assertNotNull("The Mobilewebsite user defined swatch should not be null", result.getMobilecolorswatchmapuserdefined()); 
     assertNotNull("The Mobilewebsite user defined swatch id should not be null.", result.getMobilecolorswatchmapuserdefined().getMobileColorSwatchMapUserDefinedId()); 
     assertEquals("The result aside property should be equivalent to the expected aside property.", expected.getAside(), result.getMobilecolorswatchmapuserdefined().getAside()); 
     assertEquals("The result SiteName property should be equivalent to the expected SiteName property.", expected.getSiteName(), result.getMobilecolorswatchmapuserdefined().getSiteName()); 
    } 

는 서비스 (주 : 나는 현재 이미 관련이 있다는 조건에서 저장/삭제를하고있는 중이 야 -이) 일대일 수 있지만 유산입니다해야합니다 mobilecolorswatchmapuserdefinedDAO.store(related_swatchmap); : 위의 강조 표시된 라인에

@Override 
@Transactional 
public Mobilewebsite saveMobilewebsiteMobilecolorswatchmapuserdefined(Integer mobileWebsiteId, Mobilecolorswatchmapuserdefined related_swatchmap) { 
    log.debug("saveMobilewebsiteMobilecolorswatchmapuserdefined(Integer mobileWebsiteId=[" + mobileWebsiteId + "], Mobilecolorswatchmapuserdefined related_swatchmap=[" + related_swatchmap + "])"); 

    Mobilewebsite mobilewebsite = mobilewebsiteDAO.findMobilewebsiteByPrimaryKey(mobileWebsiteId, -1, -1); 
    Calendar now = Calendar.getInstance(); 

    if (mobilewebsite.getMobilecolorswatchmapuserdefined() != null) { 
     this.deleteMobilewebsiteMobilecolorswatchmapuserdefined(mobilewebsite.getMobileWebsiteId(), mobilewebsite.getMobilecolorswatchmapuserdefined().getMobileColorSwatchMapUserDefinedId()); 
    } 

    related_swatchmap.setCreatedDtstamp(now); 
    related_swatchmap.setLastUpdatedDtstamp(now); 

    related_swatchmap.addToMobilewebsites(mobilewebsite); 
    **related_swatchmap = mobilecolorswatchmapuserdefinedDAO.store(related_swatchmap);** 

    mobilewebsite.setMobilecolorswatchmapuserdefined(related_swatchmap); 
    mobilewebsite = mobilewebsiteDAO.store(mobilewebsite); 
    mobilewebsiteDAO.flush(); 

    return mobilewebsite; 
} 

스택 추적을 가리 킵니다.

스택 트레이스는 다음 표에 정의 nullable 열 있지만 도메인 클래스 not nullable로 표시된 상기 I 유사한 경험이

2012-12-11 15:14:11.192 59464 [http-8080-2] ERROR - Unexpected error occurred 
org.apache.wicket.WicketRuntimeException: Method onFormSubmitted of interface org.apache.wicket.markup.html.form.IFormSubmitListener targeted at [ [Component id = form1]] on component [ [Component id = form1]] threw an exception 
    at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:270) 
    at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216) 
    at org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248) 
    at org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234) 
    at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:781) 
    at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) 
    at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:255) 
    at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:212) 
    at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:283) 
    at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:185) 
    at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: java.lang.reflect.InvocationTargetException 
    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.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:260) 
    ... 22 more 
**Caused by: java.lang.NullPointerException: null entities are not supported by org.hibernate.event.def.EventCache** 
    at org.hibernate.event.def.EventCache.containsKey(EventCache.java:80) 
    at org.hibernate.event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:361) 
    at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303) 
    at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:258) 
    at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:84) 
    at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:859) 
    at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:843) 
    at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:847) 
    at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:682) 
    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.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365) 
    at $Proxy44.merge(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.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240) 
    at $Proxy44.merge(Unknown Source) 
    at org.skyway.spring.util.dao.AbstractJpaDao.merge(AbstractJpaDao.java:61) 
    at org.skyway.spring.util.dao.AbstractJpaDao.store(AbstractJpaDao.java:48) 
    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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    at $Proxy76.store(Unknown Source) 
    **at com.telventdtn.aghostmobile.service.MobilewebsiteServiceImpl.saveMobilewebsiteMobilecolorswatchmapuserdefined(MobilewebsiteServiceImpl.java:342)** 
    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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    at $Proxy77.saveMobilewebsiteMobilecolorswatchmapuserdefined(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.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416) 
    at org.apache.wicket.proxy.$Proxy4.saveMobilewebsiteMobilecolorswatchmapuserdefined(Unknown Source) 
    at com.telventdtn.aghostmobile.ArrangeColorsThemePage$SubmitButtonHandler.onSubmit(ArrangeColorsThemePage.java:126) 
    at com.telventdtn.aghostmobile.markup.html.form.ObservableButton.notifyObservers(ObservableButton.java:20) 
    at com.telventdtn.aghostmobile.markup.html.form.ButtonFactory$1.onSubmit(ButtonFactory.java:34) 
    at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1151) 
    at org.apache.wicket.markup.html.form.Form.process(Form.java:834) 
    at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:762) 
    at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:692) 
    ... 27 more 
+0

나는 코드를 추가 할 것이지만, 어떤 예외가 의미 할 수 있는지도 모르겠다. 어떤 코드를 포함해야하는지 잘 모르겠다. –

+0

stacktrace 오류와 관련된 코드를 게시하는 것으로 시작할 수 있습니다. –

답변

5

. nulls으로 개체를 저장하려고 시도했지만 실제로 유지되었지만 오류가 발생하지 않았습니다. 희망이 도움이됩니다.

+1

소리가 나기까지 이상하게 들리며 이는 우리의 문제이기도합니다. 주석에는 nullable = false가 표시되고 db 스키마에는 null이 허용됩니다. 우리의 데이터에는 유효성 검사로 인해 어떤 것도 잡히지 않은 null 값이있었습니다. 주석을 수정하거나 데이터를 수정하면 문제가 해결됩니다. – skipwalker