Koziołek napisał(a)
- Można oczywiście wyrzucić sobie transakcję do osobnej zmiennej (przy większym pisaniu nawet wskazane).
User userx = em.find(User.class, user.getUserId());
Zwraca usera o danym ID.
A napisalem cos takiego:
public boolean wstawPunkty(String idHasla, String idWykladowcy, String idPytania, int iloscPunktow)
{
Student student=en.find(Student.class, Integer.parseInt(idHasla));
System.out.println("aaaa");
Wykladowca wykladowca=en.find(Wykladowca.class, Integer.parseInt(idWykladowcy));
Pytanie pytanie=en.find(Pytanie.class, Integer.parseInt(idPytania));
Punkty punkty=new Punkty();
//punkty.setIdPunktow(1);
punkty.setStudent(student);
punkty.setWykladowca(wykladowca);
punkty.setPytanie(pytanie);
punkty.setIloscPunktow(iloscPunktow);
try
{
en.getTransaction().begin();
en.persist(punkty);
en.getTransaction().commit();
return true;
}
catch(Exception e)
{
e.printStackTrace();
return false;
}
finally
{
en.close();
}
}
I wywala blad:
javax.ejb.EJBException: nested exception is: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.RemoteException: null; nested exception is:
java.lang.IllegalStateException
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.RemoteException: null; nested exception is:
java.lang.IllegalStateException
at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:243)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:205)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152)
at com.sun.corba.ee.impl.presentation.rmi.bcel.BCELStubBase.invoke(BCELStubBase.java:225)
at session.__ZiarnoRemote_Remote_DynamicStub.wstawPunkty(session/__ZiarnoRemote_Remote_DynamicStub.java)
at session._ZiarnoRemote_Wrapper.wstawPunkty(session/_ZiarnoRemote_Wrapper.java)
at client.Klient.main(Klient.java:67)
Caused by: java.rmi.RemoteException: null; nested exception is:
java.lang.IllegalStateException
at com.sun.enterprise.iiop.POAProtocolMgr.mapException(POAProtocolMgr.java:251)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1411)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1316)
at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:210)
at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:117)
at $Proxy55.wstawPunkty(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 com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:154)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:687)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:227)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1846)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1706)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1088)
at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:223)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:806)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:563)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2567)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
Caused by: java.lang.IllegalStateException
at com.sun.enterprise.util.EntityManagerWrapper.close(EntityManagerWrapper.java:1056)
at session.Ziarno.wstawPunkty(Ziarno.java:285)
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.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1011)
at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:175)
at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2920)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4011)
at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:203)
... 17 more
javax.ejb.EJBException: nested exception is: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.RemoteException: null; nested exception is:
java.lang.IllegalStateException
at session._ZiarnoRemote_Wrapper.wstawPunkty(session/_ZiarnoRemote_Wrapper.java)
at client.Klient.main(Klient.java:67)
Co jest nie tak? Bo mam tabele Punkty, ktora ma duzo kluczy obcych - jak mozna uzupelnic dana kolumne bedaca kluczem obcym skoro w Entity tabela Punkty np nie ma pola mapowanego idPytania tylko Pytanie (jako obiekt)...