Я только начал использовать Hibernate, и я использую его для создания RESTful API с Джерси.
Чтобы привыкнуть к Hibernate, я пытаюсь реализовать операции CRUD для этой сущности (Для удобства я исключил геттеры, сеттеры и аннотации:
public class People implements java.io.Serializable {
private Integer id;
private String name;
private String surname;
private String phone;
private String email;
private String dui;
private String address;
private Boolean state;
private Set userses = new HashSet(0);
public People() {
}
public People(String name, String surname, String phone, String email, String dui, String address) {
this.name = name;
this.surname = surname;
this.phone = phone;
this.email = email;
this.dui = dui;
this.address = address;
}
public People(String name, String surname, String phone, String email, String dui, String address, Boolean state, Set userses) {
this.name = name;
this.surname = surname;
this.phone = phone;
this.email = email;
this.dui = dui;
this.address = address;
this.state = state;
this.userses = userses;
}
}
Поскольку я хочу получить список записей для этой сущности, но НЕ для ее дочерних элементов (пользователей в этом случае [да, я знаю, чтополе имеет забавное имя]), я выбираю список, используя конструктор сущности:
SessionFactory sesFact = HibernateUtil.getSessionFactory();
Session ses = sesFact.openSession();
Transaction tra = null;
tra = ses.beginTransaction();
String queryString = "SELECT new People(p.name, p.surname, p.phone, p.email, p.dui, p.address) FROM People p";
Query query = ses.createQuery(queryString, People.class);
List<People> people = query.list();
Проблема с этим подходом состоит в том, что я получаю список сущностей БЕЗ их соответствующих идентификаторов, и янужно, чтобы они были в возвращаемом списке (... Если только у Hibernate нет особой причины не делать этого, о чем я не знаю. Если есть такая вещь, я буду благодарен, если вы укажете на это).
Итак, каков наилучший подход для достижения этого?
Я вижу, что ни один из конструкторов, сгенерированных Hibernate, не принимает идентификатор в качестве аргумента.Есть ли причина для этого?
Я мог бы создать собственный конструктор, который включает в себя идентификатор в качестве параметра, но я действительно не хочу менять сгенерированный POJO, так как очень вероятно, что моя база данных изменится, иЯ не хочу терять все свои закодированные вещи, если я автоматически регенерирую POJO.