我想使用Hibernate将一些对象保存到具有预定义ID的数据库。使用Hibernate会话的保存方法可以做到吗?使用提供的ID保存新对象与休眠使用提供的ID
我知道的有以下解决方法:
1)执行SQL脚本需要插入语句:
insert into MyObj(id,name) values (100,'aaa'), (101,'bbb');
2)使用SQL查询在休眠:
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?
在节11.2. Making objects persistent Hibernate参考有例子的代码:
或者,也可以使用保存的一个重载 版本分配 标识符()。
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));
但我找不到例子如何做到这一点。
那么,是否有可能保存新的对象与提供的ID到数据库与Hibernate不使用SQL查询?如果是,那么如何? 如何在Hibernate参考中提到的超载会话方法save()?
谢谢!
使用两个论点时不要忘记不使用ID发电机'保存' – 2010-10-28 21:16:46
呃,正确的链接是:http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/classic/Session.html#save(java.lang.Object,java.io.可序列化) – iryndin 2010-10-28 21:32:26
使用两个参数的'Save()'的唯一变体需要一个字符串,然后该对象本身...不是一个键。 – Nyerguds 2015-09-02 08:31:33