2017-08-22 6 views
2

J'ai seulement un nom de table appelé Employee, cette table a tous les attributs d'adresse et je veux mapper en utilisant la table des employés hibernate et la classe interne des attributs d'adresse.Comment mapper une classe imbriquée dans une table de base de données unique en utilisant Hibernate?

<property name="clientMark" column="CLIENT_MARK"/> 
<property name="Address.street1" column="B_STREET_ADDRESS_1"/> 
<property name="Address.street2" column="B_STREET_ADDRESS_2"/> 
<property name="Address.city" column="B_CITY"/> 
<property name="Address.state" column="B_STATE"/> 
<property name="Address.postalCode" column="B_POSTAL_CODE"/> 
<property name="Address.country" column="B_COUNTRY"/> 

Répondre

0

Si je comprends bien, vous devez faire quelque chose comme ceci:

public class Employee { 
    private String clientMark; 
    private Address address; 

    public String getClientMark() { 
     return clientMark; 
    } 

    public void setClientMark(String clientMark) { 
     this.clientMark = clientMark; 
    } 

    public Address getAddress() { 
     return address; 
    } 

    public void setAddress(Address address) { 
     this.address = address; 
    } 

    public static class Address { 
     private String street1; 
     private String street2; 

     public String getStreet1() { 
      return street1; 
     } 

     public void setStreet1(String street1) { 
      this.street1 = street1; 
     } 

     public String getStreet2() { 
      return street2; 
     } 

     public void setStreet2(String street2) { 
      this.street2 = street2; 
     } 
    } 
} 

Faire classe intérieure publique et statique que vous seriez en mesure de créer de nouveaux objets à partir d'autres classes. Ajoutez ensuite la méthode setter et getter pour la classe interne dans la classe externe que le hibernate sera capable de définir et d'obtenir l'objet. Ensuite, vous devez modifier votre fichier .hbm.xml:

<property name="clientMark" column="CLIENT_MARK"/> 
    <component name="address"> 
     <property name="street1" column="B_STREET_ADDRESS_1"/> 
    </component> 
    <component name="address"> 
     <property name="street2" column="B_STREET_ADDRESS_2"/> 
    </component> 

annotation Hibernate <component> dit que la variable sera classe qui a certaines variables (<property> dans le fichier hbm.xml). Après cela, vous pouvez tester votre code comme ceci:

Employee entity = new Employee(); 
    entity.setClientMark("client_mark"); 
    Employee.Address address = new Employee.Address(); 
    address.setStreet1("street1"); 
    address.setStreet2("street2"); 
    entity.setAddress(address); 
    // entity is ready to be saved 

Et votre résultat dans votre base de données sera:

|------------------------------------------------------------| 
| id | CLIENT_MARK | B_STREET_ADDRESS_1 | B_STREET_ADDRESS_2 | 
|------------------------------------------------------------| 
| 1 | client_mark | street1   | street2   | 
|------------------------------------------------------------| 

Je l'espère vous aide ... ☺

+0

Merci ,, Oui C'est correct :) –