I am developping a JPA, EJB and JSF 2.0 web app. I persist an entity PedidoUsuario and afetr it I want to get its PK in
the corresponding table ALMACEN.PEDIDO_USUARIO. To persist the entity I use an special EJB that calls another EJBs.
Here is the EJB,
The problem is in the method placeOrder(Usuario usuario, ShoppingCart cart) when I try to get the PK of the persisted PedidoUsuario.
For it I use an EJB that implements a StoredProcedureCall. Why? The reason why is that if I use JPQL, being the PK type of sequence
it returns me a wrong PK. So I guessed it could be resolved attacking the database directly.
Here is the EJB,
being the SP as follows,
But it fails. The EJB method ObtenerMaxId() returns a NullPointerException.
Maybe I am wrong in the code of the SP or maybe in the EJBs, I do not know.
Ok Jose, so you're using a sequence generator for your ID's. Could you test just some minimalist code if the entity is persisted, i.e.:If you invoke this code, you should see the automatically generated (using your sequence) ID printed in the console. If you don't than I guess it's something wrong with this sequence generator.
By the way - is this (assigning of an ID and reading it back) all what you want to achieve right now?
>>By the way - is this (assigning of an ID and reading it back) all what you want to achieve right now?
Yes, that is all.
I do not understand why the sequence generator returns pu.getPedidousuario 106 value when the PK in the table Pedido_Usuario (ID_PEDIDOUSUARIO)
is 107 value. This is the reasson why I prefer to get it calling a SP or a Function. But even in those cases I get a NullPointer.
I am in conversation with James Sutherland from EclipseLink by the mailing list but all the help should be really appreciated.
The other one is calling a StoredFunctionCall that gets the last Id inserted in the database.
The estrange thing is that in both cases I get a value one unit less than the real Id (PK).
I mean if the inserted Id (PK) has value of ‘n’ I get in both cases ‘n-1’. And that is the
reason I am getting NullPointerException for the first inserting.
But one thing that I cannot understand is that if I execute the Function from inside an Oracle
management tool I get the correct value so there must be something wrong during the execution
of the EJBs.
Any suggestion about this issue should be really appreciated.
You showed up just in time for the waffles! And this tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop