Я хочу сохранить некоторые объекты в базе данных с предопределенными идентификаторами, используя Hibernate. Можно ли это сделать, используя метод сохранения сессии Hibernate?
Я знаю, что есть следующие обходные пути:
1) выполнить скрипт SQL с необходимыми инструкциями вставки:
insert into MyObj(id,name) values (100,'aaa'), (101,'bbb');
2) использовать SQL-запрос в Hibernate:
public static boolean createObj(Long id, String name) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
if (session.get(MyObj.class, id) == null) {
session.beginTransaction();
SQLQuery sqlQuery = session.createSQLQuery
("insert into myobj(id,name) values(?,?)");
sqlQuery.setLong(0, id);
sqlQuery.setString(1, name);
sqlQuery.executeUpdate();
session.getTransaction().commit();
return true;
} else {
return false;
}
}
Но: можно ли обойтись без SQLQuery?
В справке Hibernate в разделе 11.2. Делаем объекты постоянными есть пример кода:
Кроме того, вы можете назначить
идентификатор с использованием перегруженной версии
сохранения ().
DomesticCat pk = new DomesticCat();
pk.setColor(Color.TABBY);
pk.setSex('F');
pk.setName("PK");
pk.setKittens( new HashSet() );
pk.addKitten(fritz);
sess.save( pk, new Long(1234) );
Но я не смог найти пример того, как это сделать.
Итак, возможно ли сохранить новые объекты с предоставленными идентификаторами в базе данных с помощью Hibernate, не используя SQL-запрос? Если да, то как?
А как перегрузить метод сеанса save (), как упомянуто в справочнике Hibernate?
Спасибо!