Galera,
Alguém pode me dar um help no problema de persistencia JPA.
Tenho a seguintes relação entre as entitys:
@OneToMany
SmIamIdentiyManager ---- SmIamAccessManager
@ManyToOne
SmIamAccessManager ---- SmAdmAccessmanager
SmIamAccessManager ---- SmAdmFunctionality
A persistence está ocorrendo corretamente, quando vou persistir a entity SmIamAccessManager (através da relação) utilizando List de size() = 4 ocorre a persistencia somente no ultimo objeto do List, nao persistindo o List inteiro.
[code]
// Method prepara o model para ser persistido
private List smIamAccessmanagersL = new ArrayList();
public void getPrepareModelFA(){
Object[] item = FPAFindByProfile.toArray();
for (Object obj : item) {
Object[] x = (Object[]) obj;
SmAdmFunctionality objAdmFunctionality = (SmAdmFunctionality) x[1];
SmAdmAccessmanager objAdmAccessmanager = (SmAdmAccessmanager) x[2];
System.out.println(“ID ACCESSMANAGER :”+ objAdmAccessmanager.getIdAccessmanageradm());
accessManager.setSmAdmFunctionality(objAdmFunctionality);
accessManager.setSmAdmAccessmanager(objAdmAccessmanager);
smIamAccessmanagersL.add(accessManager);
}
}
public void createCustomer(){
try{
getPrepareModelFA();
HashSet <SmIamIdentitymanager> identityManagerL = new HashSet<SmIamIdentitymanager>();
identityManager.setSmIamCustomer(customerBean);
identityManagerL.add(identityManager);
accessManager.setSmIamIdentitymanager(identityManager);
smIamAccessmanagersL.add(accessManager);
customerBean.setSmIamIdentitymanagers(identityManagerL);
identityManager.setSmIamProfiles(profile);
identityManager.setSmIamAccessmanagers(smIamAccessmanagersL);
customerBean.setSmIamContracts(contractL);
customerFacade.saveCustomer(customerBean);
}
Como assim? Está ocorrendo corretamente ou não?
Aliás, o tamanho da lista é irrelevante neste caso.
Grande drsmachado,
O problema é que eu nao estou conseguindo persistir a List<SmIamAccessmanager> inteira da relaçao OneToMany, somente o ultimo elemento da List é persistido.
As outras entity envolvidas na relação são persistidas normalmente, somente a entity SmIamAccessmanager, ocorre esse problema de nao persistir a List inteira.
CODIGO:
private List<SmIamAccessmanager> smIamAccessmanagersL = new ArrayList<SmIamAccessmanager>();
// Method - Prepare object will be persist
public void getPrepareModelFA(){
Object[] item = FPAFindByProfile.toArray();
for (Object obj : item) {
Object[] x = (Object[]) obj;
SmAdmFunctionality objAdmFunctionality = (SmAdmFunctionality) x[1];
SmAdmAccessmanager objAdmAccessmanager = (SmAdmAccessmanager) x[2];
System.out.println(“ID ACCESSMANAGER :”+ objAdmAccessmanager.getIdAccessmanageradm());
accessManager.setSmAdmFunctionality(objAdmFunctionality);
accessManager.setSmAdmAccessmanager(objAdmAccessmanager);
smIamAccessmanagersL.add(accessManager);
}
}
public void createCustomer(){
try{
validateData();
getPrepareModelFA();
profile.setSmAdmProfile(smAdmProfile);
HashSet <SmIamIdentitymanager> identityManagerL = new HashSet<SmIamIdentitymanager>();
identityManager.setSmIamCustomer(customerBean);
identityManagerL.add(identityManager);
profile.setSmIamIdentitymanager(identityManager);
accessManager.setSmIamIdentitymanager(identityManager);
// smIamAccessmanagersL.add(accessManager);
// Comment description in method
HashSet <SmIamContract> contractL = new HashSet<SmIamContract>();
contract.setSmIamCustomer(customerBean);
contract.setSmAdmLicense(licenseAdm);
contractL.add(contract);
customerBean.setSmIamIdentitymanagers(identityManagerL);
identityManager.setSmIamProfiles(profile);
identityManager.setSmIamAccessmanagers(smIamAccessmanagersL);
customerBean.setSmIamContracts(contractL);
customerFacade.saveCustomer(customerBean);
} catch(EJBException e){
System.out.print(e);
}
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "System Success",
objOperator.CUSTOMER_MSG_SAVE);
FacesContext.getCurrentInstance().addMessage(null, message);
}
Coloque teu código entre a tag [code].