2015-02-27 3 views
1

Я пытался простой спящий режим заполнить пример db. Есть два сотрудника и адрес POJO. Когда я пытался использовать конструктор Employee и Address с параметрами для создания двух экземпляров, была выбрана ошибка could not get constructor for org.hibernate.persister.entity.singletableentitypersister, но методы доступа к свойствам работали нормально. Почему я получил ошибку?Каковы ограничения использования конструкторов в POJO при использовании спящего режима?

Ok так У меня нет трассировки стеки прямо сейчас я перефразировать мой вопрос являются методы доступа свойства предпочтительнее конструкторов в спящем режиме?

Сотрудник POJO:

package many2one; 

public class Employee { 

    public int id; 
    public String firstName; 
    public String lastName; 
    public int salary; 
    public Address address; 

    public Employee(){} 
    public Employee(String firstName,String lastName,int salary,Address address){ 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.salary = salary; 
     this.address = address; 
    } 

    public int getId(){ 
     return id; 
    } 

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

    public String getFirstName(){ 
     return firstName; 
    } 

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

    public String getLastName(){ 
     return lastName; 
    } 

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

    public int getSalary(){ 
     return salary; 
    } 

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

    public Address getAddress(){ 
     return address; 
    } 

    public void setAddress(Address address){ 
     this.address = address; 
    } 
    @Override 
    public String toString(){ 
     return id+","+firstName+","+lastName+","+salary+","+address.getStreetName()+","+address.getCityName()+","+address.getStateName()+","+address.getZipcode(); 
    } 

} 

Адрес POJO:

package many2one; 

public class Address { 
    public int id; 
    public String streetName; 
    public String cityName; 
    public String stateName; 
    public String zipcode; 

    public Employee employee; 

    public Address(){ 

    } 

    public Address(String sname,String cname,String statename,String zipcode){ 
     this.streetName = sname; 
     this.cityName = cname; 
     this.stateName = statename; 
     this.zipcode = zipcode; 
    } 

    public int getId(){ 
     return id; 
    } 

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

    public String getStreetName(){ 
     return streetName; 
    } 

    public void setStreetName(String streetname){ 
     this.streetName = streetname; 
    } 

    public String getCityName(){ 
     return cityName; 
    } 

    public void setCityName(String cname){ 
     this.cityName = cname; 
    }  

    public String getStateName(){ 
     return stateName; 
    } 

    public void setStateName(String statename){ 
     this.stateName = statename; 
    } 

    public String getZipcode(){ 
     return zipcode; 
    } 

    public void setZipcode(String zipcode){ 
     this.zipcode = zipcode; 
    } 

    public Employee getEmployee(){ 
     return employee; 
    } 

    public void setEmployee(Employee employee){ 
     this.employee = employee; 
    } 

} 

`

+0

Полное исключение stacktrace может быть полезно для ответчиков –

+0

Хорошо, потому что у меня нет трассировки стека прямо сейчас. Я буду перефразировать мой вопрос - предпочтительны методы доступа к свойствам над конструкторами в спящем режиме? – Beginner

+0

@Beginner Пожалуйста, прочитайте: [Что делать, если кто-то отвечает на мой вопрос] (http://stackoverflow.com/help/someone-answers) – CKing

ответ

1

Ваш класс должен иметь открытый конструктор по умолчанию, который не принимает никаких аргументов. Это единственное ограничение в отношении конструкторов при использовании Hibernate.

Что касается исключения, возможно, вам не хватает установщика для одного из ваших полей, или сеттеры не следуют соглашению, ожидаемому в Hibernate. Но это может быть подтверждено только в том случае, если вы предоставили полную трассировку стека.

- методы доступа к собственности, предпочтительные по сравнению с конструкторами в спящий режим?

Что вы подразумеваете под предлогом? Если вы имеете в виду методы свойств необязательные, тогда ответ будет отрицательным. (Может быть одной из причин исключения в первую очередь)

+0

И как насчет 'Почему я получил ошибку?' Часть? –

+0

Для этого потребуется полная трассировка стека – CKing

Смежные вопросы