2017-02-20 6 views
1

지도에서 영구 요소를 제거 할 수있는 일을 지금 알아 내려고하고 있습니다. 비슷한 문제가있는 스레드를 찾았지만 아무도 나를 마침내 도울 수 없었습니다. 모든 것이 잘 작동하고, 요소를 추가하고 유지하며, 요소를 편집하고 업데이트하는 등의 작업을 수행합니다. 요소 삭제를 제외합니다. 나는 평일마다 5 개의지도로 시간 계획을 세우고있다.jpa로지도 요소 삭제하기

@Entity 
public class Schedule extends JPAEntity implements Serializable { 

... 
    @OneToMany(mappedBy = "schedule", cascade = CascadeType.ALL, orphanRemoval = true) 
    @JoinColumn(name = "id") 
    @MapKey(name = "hourTime") 
    private Map<Integer, SchoolSubject> monday; 

    @OneToMany(mappedBy = "schedule", cascade = CascadeType.ALL, orphanRemoval = true) 
    @JoinColumn(name = "id") 
    @MapKey(name = "hourTime") 
    private Map<Integer, SchoolSubject> tuesday; 

    @OneToMany(mappedBy = "schedule", cascade = CascadeType.ALL, orphanRemoval = true) 
    @JoinColumn(name = "id") 
    @MapKey(name = "hourTime") 
    private Map<Integer, SchoolSubject> wednesday; 

    @OneToMany(mappedBy = "schedule", cascade = CascadeType.ALL, orphanRemoval = true) 
    @JoinColumn(name = "id") 
    @MapKey(name = "hourTime") 
    private Map<Integer, SchoolSubject> thursday; 

    @OneToMany(mappedBy = "schedule", cascade = CascadeType.ALL, orphanRemoval = true) 
    @JoinColumn(name = "id") 
    @MapKey(name = "hourTime") 
    private Map<Integer, SchoolSubject> friday; 

    public boolean removeSubject(final int index, final SchoolSubject oldSubject) { 
     final String day = oldSubject.getWeekday(); 

     switch (day) { 
     case "Montag": 
      return monday.remove(index, oldSubject); 
     case "Dienstag": 
      return tuesday.remove(index, oldSubject); 
     case "Mittwoch": 
      return wednesday.remove(index, oldSubject); 
     case "Donnerstag": 
      return thursday.remove(index, oldSubject); 
     case "Freitag": 
      return friday.remove(index, oldSubject); 
     } 
     return false; 
    } 

SchoolSubject :

@Entity 
public class SchoolSubject extends JPAEntity implements Serializable { 

    private static final long serialVersionUID = -3554577133392512324L; 

    @Column(nullable = false) 
    private String name; 

    @Basic 
    @Column(nullable = false) 
    private int hourTime; 

    @ManyToOne(optional = false) 
    private Schedule schedule; 

JPAEntity :

@MappedSuperclass 
@EntityListeners(JPAEntityListener.class) 
public class JPAEntity { 


    @Id 
    @GeneratedValue 
    private Long id; 

그래서 다른 로직 클래스 내 삭제-방법이 여기에 코드의 핵심 부분은

가 일정하다 다음 :

@Override 
    public void removeSubject(User user, Schedule schedule, SchoolSubject oldSubject) { 
     if (schedule.removeSubject(oldSubject.getHourTime() - 1, oldSubject)) { 
      schoolSubjectDAO.remove(oldSubject); 
     } 

     scheduleDAO.update(schedule); 
     try { 
      userDAO.update(user); 
     } catch (final DuplicateUniqueFieldException e) { 
      throw new UnexpectedUniqueViolationException(e); 
     } 
    } 

메소드를 디버깅하고 있는데, 일정에서 요소를 성공적으로 제거하고 있습니다. 그러나 scheduleDAO.update(schedule)은 완전히 작동하지 않는 것 같습니다. 내가 말했듯이, 모든 다른

내가 다음 업데이트는 단방향 관계로 변경하고, SchoolSubject.schedule 필드를 제거, 지금 제안을 crizzis

완벽하게 작동합니다.

업데이트 일정 클래스 : (전 일) 주제를 추가 할 때

@Entity 
public class Schedule extends JPAEntity implements Serializable { 

    /** 
    * Die eindeutige SerialisierungsID. 
    */ 
    private static final long serialVersionUID = -3554837193392512324L; 

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) 
    @MapKey(name = "hourTime") 
    private Map<Integer, SchoolSubject> monday; 

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) 
    @MapKey(name = "hourTime") 
    private Map<Integer, SchoolSubject> tuesday; 

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) 
    @MapKey(name = "hourTime") 
    private Map<Integer, SchoolSubject> wednesday; 

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) 
    @MapKey(name = "hourTime") 
    private Map<Integer, SchoolSubject> thursday; 

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) 
    @MapKey(name = "hourTime") 
    private Map<Integer, SchoolSubject> friday; 

그러나이와

내가 새로운 오류가 발생했습니다. 가산 동작은 다음과 같은 : 당신은 그런 mappedBy를 다시 사용할 수 없습니다

Severe: javax.faces.el.EvaluationException: javax.ejb.EJBTransactionRolledbackException 
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101) 
    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:790) 
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) 
    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:198) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658) 
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 
    at de.unibremen.st.gradelog.filter.AuthorizationFilter.doFilter(AuthorizationFilter.java:94) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) 
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.ejb.EJBTransactionRolledbackException 
    at com.sun.ejb.containers.BaseContainer.mapLocal3xException(BaseContainer.java:2342) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2123) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2044) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88) 
    at com.sun.proxy.$Proxy613.update(Unknown Source) 
    at de.unibremen.st.gradelog.persistence.__EJB31_Generated__UserDAO__Intf____Bean__.update(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(Reflections.java:434) 
    at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:127) 
    at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56) 
    at org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(InjectionPointPropagatingEnterpriseTargetBeanInstance.java:67) 
    at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100) 
    at de.unibremen.st.gradelog.persistence.UserDAO$Proxy$_$$_Weld$EnterpriseProxy$.update(Unknown Source) 
    at de.unibremen.st.gradelog.businesslogic.ScheduleManager.addSubject(ScheduleManager.java:56) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081) 
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153) 
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4786) 
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:656) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) 
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608) 
    at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:64) 
    at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52) 
    at sun.reflect.GeneratedMethodAccessor86.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) 
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608) 
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163) 
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140) 
    at sun.reflect.GeneratedMethodAccessor93.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) 
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369) 
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4758) 
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4746) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88) 
    at com.sun.proxy.$Proxy605.addSubject(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(Reflections.java:434) 
    at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:127) 
    at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56) 
    at org.jboss.weld.bean.proxy.InjectionPointPropagatingEnterpriseTargetBeanInstance.invoke(InjectionPointPropagatingEnterpriseTargetBeanInstance.java:67) 
    at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100) 
    at de.unibremen.st.gradelog.businesslogic.IScheduleManager$1688850411$Proxy$_$$_Weld$EnterpriseProxy$.addSubject(Unknown Source) 
    at de.unibremen.st.gradelog.controller.ScheduleBean.save(ScheduleBean.java:100) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.sun.el.parser.AstValue.invoke(AstValue.java:289) 
    at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304) 
    at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40) 
    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:87) 
    ... 41 more 
Caused by: javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean 
    at com.sun.ejb.containers.EJBContainerTransactionManager.checkExceptionClientTx(EJBContainerTransactionManager.java:666) 
    at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:511) 
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4566) 
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2074) 
    ... 109 more 
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.v20150605-31e8258): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: Column 'FRIDAY_ID' cannot accept a NULL value. 
Error Code: 20000 
Call: INSERT INTO SCHEDULE_SCHOOLSUBJECT (monday_ID, Schedule_ID) VALUES (?, ?) 
    bind => [2 parameters bound] 
Query: DataModifyQuery(name="monday" sql="INSERT INTO SCHEDULE_SCHOOLSUBJECT (monday_ID, Schedule_ID) VALUES (?, ?)") 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:879) 
    at org.eclipse.persistence.internal.jpa.QueryImpl.performPreQueryFlush(QueryImpl.java:967) 
    at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:207) 
    at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:473) 
    at de.unibremen.st.gradelog.persistence.UserDAO.getUserForUsername(UserDAO.java:227) 
    at de.unibremen.st.gradelog.persistence.UserDAO.update(UserDAO.java:151) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081) 
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153) 
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4786) 
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:656) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) 
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608) 
    at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:64) 
    at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52) 
    at sun.reflect.GeneratedMethodAccessor86.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) 
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608) 
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163) 
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140) 
    at sun.reflect.GeneratedMethodAccessor93.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) 
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369) 
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4758) 
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4746) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212) 
    ... 107 more 
Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.v20150605-31e8258): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: Column 'FRIDAY_ID' cannot accept a NULL value. 
Error Code: 20000 
Call: INSERT INTO SCHEDULE_SCHOOLSUBJECT (monday_ID, Schedule_ID) VALUES (?, ?) 
    bind => [2 parameters bound] 
Query: DataModifyQuery(name="monday" sql="INSERT INTO SCHEDULE_SCHOOLSUBJECT (monday_ID, Schedule_ID) VALUES (?, ?)") 
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:331) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:902) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:964) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:633) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:560) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:2055) 
    at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:306) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:242) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelectCall(DatasourceCallQueryMechanism.java:271) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeNoSelect(DatasourceCallQueryMechanism.java:251) 
    at org.eclipse.persistence.internal.queries.StatementQueryMechanism.executeNoSelect(StatementQueryMechanism.java:118) 
    at org.eclipse.persistence.queries.DataModifyQuery.executeDatabaseQuery(DataModifyQuery.java:85) 
    at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:904) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:3267) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1857) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1839) 
    at org.eclipse.persistence.mappings.ManyToManyMapping.insertAddedObjectEntry(ManyToManyMapping.java:630) 
    at org.eclipse.persistence.mappings.ManyToManyMapping.performDataModificationEvent(ManyToManyMapping.java:838) 
    at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:160) 
    at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:4260) 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1441) 
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithPreBuiltChangeSet(UnitOfWorkImpl.java:1587) 
    at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.writeChanges(RepeatableWriteUnitOfWork.java:455) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:874) 
    ... 141 more 
Caused by: java.sql.SQLIntegrityConstraintViolationException: Column 'FRIDAY_ID' cannot accept a NULL value. 
    at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source) 
    at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source) 
    at org.apache.derby.client.am.PreparedStatement.executeUpdate(Unknown Source) 
    at com.sun.gjc.spi.base.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:125) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:892) 
    ... 164 more 
Caused by: org.apache.derby.client.am.SqlException: Column 'FRIDAY_ID' cannot accept a NULL value. 
    at org.apache.derby.client.am.Statement.completeExecute(Unknown Source) 
    at org.apache.derby.client.net.NetStatementReply.parseEXCSQLSTTreply(Unknown Source) 
    at org.apache.derby.client.net.NetStatementReply.readExecute(Unknown Source) 
    at org.apache.derby.client.net.StatementReply.readExecute(Unknown Source) 
    at org.apache.derby.client.net.NetPreparedStatement.readExecute_(Unknown Source) 
    at org.apache.derby.client.am.PreparedStatement.readExecute(Unknown Source) 
    at org.apache.derby.client.am.PreparedStatement.flowExecute(Unknown Source) 
    at org.apache.derby.client.am.PreparedStatement.executeUpdateX(Unknown Source) 
    ... 167 more 
+0

removeSubject impl을 추가 할 수 있습니까? 또한 업데이트 전에 병합을 수행합니까? –

+0

그래, 클래스 메서드를 사용하여 클래스를 업데이트했지만 디버깅하는 동안 그 방법에 문제가없는 것 같았다. 엔티티 맵에서 오브젝트를 성공적으로 제거하고있었습니다. 병합은 실제로 javax.persistence.EntityManager'의 merge() 메소드 인 scheduleDAO.update (schedule)에 의해 수행됩니다. 요소를 추가하고 scheduleDAO.update (schedule)를 수행 할 때 모든 것이 잘 작동합니다. – Noli

+0

보았습니다. 어떤 퍼시스턴스 공급자를 사용하고 있습니까? 버전은 무엇입니까? –

답변