public class Network {
private List<Institution> institutions;
}
public class Institution {
private List< HealthProfessional > healthprofessionals;
}
NB: i remove the jpa annotations, but i can assure that they are correct.
The problem:
I use stored procedures (i configured it by implementing the DescriptorCustomizer interface) to write changes and new object to an oracle Database (10g), and read information from views.
But by adding a new HealthProfessional there is an exception thrown from the database (the issue is being resolved by somebody else). Since i use a strongly tied domain model, i build all the relations between the instances involved before saving. I catch the exception coming from the database and suppose the system would continue to work without problem.
- But the next time i tryied to refresh the corresponding network, i get an Exception from the EntityManager telling that the Network instance is no more managed.
- so i fixed by catching the exception and retrieve a new instance using EntityManager#find() method
- by the next commit (another use cases) i find out that the old network instance is always somewher in the session, because eclipselink tries to insert it (as new object), although the id is already setted on it.
A possible solution could be to set eclipselink so that, it insert objects only if it was explicitely required (calling EntityManager#persist() or EntityManager#merge() methods). Is there a way to do it?
if not, how can i solve the problem
thanks for any help
Rodrigue