我想使用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