2016-03-22 12 views
2

Merhaba hazır öğrenme Hazırda beklemede, Şu anda @Embedded ek açıklama kullanmaya çalışıyorum, ancak DB'imdeki @Embeddable nesnesinden null aldım.DB ile @@ @@ ombedded

@Entity 
public class Employee { 

@Id 
@GeneratedValue 
private int id; 
private String firstName; 
private String lastName; 
private double salary; 

@Embedded 
private Adress adress; 

public Adress getAdress() { 
    return adress; 
} 


public void setAdress(Adress adress) { 
    this.adress = adress; 
} 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public String getFirstName() { 
    return firstName; 
} 

public void setFirstName(String firstName) { 
    this.firstName = firstName; 
} 

public String getLastName() { 
    return lastName; 
} 

public void setLastName(String lastName) { 
    this.lastName = lastName; 
} 

public double getSalary() { 
    return salary; 
} 

public void setSalary(double salary) { 
    this.salary = salary; 
} 

Yani bu Adress.class benim Çalışan tutun sınıf, @embedded alandır İşte Adres sınıf gelir::

@Embeddable 
public class Adress { 
private String locality; 
private String streetNumber; 
private String zipCode; 


public String getLocality() { 
    return locality; 
} 
public void setLocality(String locality) { 
    this.locality = locality; 
} 
public String getStreetNumber() { 
    return streetNumber; 
} 
public void setStreetNumber(String streetNumber) { 
    this.streetNumber = streetNumber; 
} 
public String getZipCode() { 
    return zipCode; 
} 
public void setZipCode(String zipCode) { 
    this.zipCode = zipCode; 
} 


} 

ve benim ana şu şöyle

kodudur Sınıf Çalışanı ile ilgili alanlar veritabanına giderler. sınıf:

public class Main { 

public static void main(String[] args) { 

    EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("myDatabase"); 
    EntityManager entityManager = entityManagerFactory.createEntityManager(); 

    Employee employee = new Employee(); 
    Adress adress = new Adress(); 
    adress.setLocality("New York"); 
    adress.setZipCode("55-5555"); 
    adress.setStreetNumber("55"); 

    employee.setFirstName("Andy"); 
    employee.setLastName("Cole"); 
    employee.setSalary(3333); 

    entityManager.getTransaction().begin(); 
    entityManager.persist(employee); 
    entityManager.getTransaction().commit(); 
    entityManager.close(); 
    entityManagerFactory.close(); 

} 

} 

problemsiz, ancak sınıf adresi ile ilgili alanlar null olarak ayarlandı. Onları setValues ​​olarak almak istiyorum. Herkese şimdiden teşekkürler.

cevap

1

Sen setAddress görüşme

public class Test { 

    public static void main(String[] args) { 

     EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("myDatabase"); 
     EntityManager entityManager = entityManagerFactory.createEntityManager(); 

     Employee employee = new Employee(); 
     Adress adress = new Adress(); 
     adress.setLocality("New York"); 
     adress.setZipCode("55-5555"); 
     adress.setStreetNumber("55"); 

     employee.setFirstName("Andy"); 
     employee.setLastName("Cole"); 
     employee.setSalary(3333); 

     employee.setAdress(adress); 

     entityManager.getTransaction().begin(); 
     entityManager.persist(employee); 
     entityManager.getTransaction().commit(); 
     entityManager.close(); 
     entityManagerFactory.close(); 
    } 
} 
+0

sayesinde kaçırıyorsun !, i onIarinki gibi düşünerek ama açıklama hepsini işleme düşünüldü. – filemonczyk

+0

Denedin mi? – VinhNT

+0

Evet, bitti ve ipucunuzla çalışıyor – filemonczyk

0

Oluşturduğunuz adresinizi, çalışanınızın devam etmeden önce çalışanınıza vermeden önce, çalışanınızın adresinden haberdar etmemesi gerekir.

employee.setAdress(adress);