JPA - Problema para Persist List <Object> Relação OneToMany

3 respostas
R

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 identityManagerL = new HashSet();
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);
}

3 Respostas

D

Como assim? Está ocorrendo corretamente ou não?
Aliás, o tamanho da lista é irrelevante neste caso.

R

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 &lt;SmIamIdentitymanager&gt; identityManagerL = new HashSet&lt;SmIamIdentitymanager&gt;();
		identityManager.setSmIamCustomer(customerBean);
		identityManagerL.add(identityManager);

		profile.setSmIamIdentitymanager(identityManager);
                                      accessManager.setSmIamIdentitymanager(identityManager);

// smIamAccessmanagersL.add(accessManager);
// Comment description in method

HashSet &lt;SmIamContract&gt; contractL = new HashSet&lt;SmIamContract&gt;();
		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);
}
D

Coloque teu código entre a tag [code].

Criado 2 de julho de 2013
Ultima resposta 3 de jul. de 2013
Respostas 3
Participantes 2