2011-10-04 4 views
0

Struts 2 w/hibernate의 새 사용자입니다. "클라이언트"및 "Coordonnees"(프랑스어 단어) 내 테이블 "클라이언트"에서 "coordonnees_id"라는 FK가 있는데 "Coordonnees"테이블의 "id"필드를 참조합니다. 삽입을 만들었습니다. 이 같은 형태 :Struts2/Hibernate가있는 Insert의 외래 키

파일 add.jsp

<s:form method="post" action="create"> 
    <s:textfield cssClass="" label="Nom" name="client.nom" /> 
    <s:textfield cssClass="" label="Prénom" name="client.prenom" /> 
    .... 
    <s:textfield cssClass="" label="Email" name="coordonnees.email" /> 
    <s:textfield cssClass="" label="Adresse" name="coordonnees.adresse" /> 
    <s:submit value="Insert" /> 
</s:form> 

파일 ClientAction.java

private Client client; 
private ClientManager clientManager; 
private Coordonnees coordonnees; 
private CoordonneesManager coordonneesManager; 

public String create() { 

    client = getClient(); 
    coordonnees = getCoordonnees(); 

    try { 
     clientManager.insert(client); 
     coordonneesManager.insert(coordonnees); 
     return SUCCESS; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return ERROR; 
    } 
} 

파일 CoordonneesManager.java

내 Client.hbm.xml 파일에서
public boolean insert(Coordonnees coordonnees) { 

    session = MyHibernateUtil.currentSession(); 
    tx = session.beginTransaction(); 
    try { 
     session.save(coordonnees); 
     log.info("Enregistrement de : " + getClass()); 
     return true; 
    } catch (Exception e) { 
     log.error(e); 
     return false; 
    } finally { 
     tx.commit(); 
     MyHibernateUtil.closeSession(); 
    } 
} 

:

<many-to-one class="model.Coordonnees" fetch="select" name="coordonnees"> 
    <column name="coordoonnees_id"/> 
</many-to-one> 

여기 내 문제 : 나는 내 양식을 제출하면 , 나는 (... 물론) 테이블 클라이언트에 데이터를 삽입 할이, 테이블 "Coordonnees"(잘 작동합니다)에 넣고 테이블 Coordonnees에서 만든 "id"를 가져와 내 테이블 Client (필드 "coordonnees_id"=> 내 FK)에 삽입하고 싶습니다.

struts2에서 쉽게 할 수있는 옵션이 있습니까? 물론 테이블 Coordonnees에서 마지막 삽입에 대한 select 쿼리를 수행 할 수 있습니다. id를 가져 와서 테이블 클라이언트를 업데이트하십시오.하지만 요점은 아닙니다. Struts가 나를 위해이 작업을 수행하길 원합니다 (물론 가능하다면).

내가이 두 개체를 지속하는 것은 동일한 트랜잭션에서 발생한다고 생각 당신의 도움 :)

+0

개체와 매핑이 올바르게 설정 되었다면, Hibernate는 개체 그래프를 삽입 할 때 외부 키가 모두 올바르게 설정되었는지 확인해야합니다. – cdeszaq

+0

안녕하세요 cdeszaq, 그건 내 질문 : 어떻게 그 요소를 정확하게 매핑 할 수 있습니까? 나는 그 기술을 가진 초보자이다 : /. 이 파일이 "Patient.hbm.xml"파일에 있습니까? 답을 보내 주셔서 감사합니다 – Vince

답변

0

에 대한 여러분 모두 감사합니다. 먼저 부모를 유지해야합니다 (예 : coordonnees). 그런 다음 기본 키를 가져온 다음 자식 개체에 관계를 설정합니다. 그 후에 아이를 지키십시오.

+0

잠시 동안, 저는 이것을합니다 : session.save (coordonnees); client.setCoordonnees (coordonnees); session.save (client); 나는 그것을 처리 할 수는 있지만, 이것을 자동으로 수행하는 방법이 있는가? 아니면 유일한 방법인가? 유닉스에 대한 답변 주셔서 감사합니다. – Vince