Chcę zapisać niektóre obiekty do bazy danych z predefiniowanymi identyfikatorami przy użyciu trybu hibernacji. Czy można to zrobić za pomocą metody zapisu sesji Hibernate?Zapisz nowy obiekt przy użyciu Hibernate za pomocą dostarczonego identyfikatora
wiem, że istnieją następujące rozwiązania:
1) wykonać SQL skrypt z niezbędnych deklaracji należy wpisać:
insert into MyObj(id,name) values (100,'aaa'), (101,'bbb');
2) użyć zapytania SQL w Hibernacja:
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;
}
}
Ale: czy można to zrobić bez SQLQuery?
W hibernacji odniesienia w sekcji 11.2. Making objects persistent jest przykład kodu:
Alternatywnie, można przypisać identyfikator stosując przeciążony wersję Save().
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));
Ale nie mogłem znaleźć przykład, jak to zrobić.
Czy możliwe jest zapisywanie nowych obiektów z podanymi ID do bazy danych przy użyciu Hibernate bez użycia zapytania SQL? Jeśli tak, to w jaki sposób? A jak przeciążać metodę sesji save() jak wspomniano w odwołaniu do Hibernacji?
Dzięki!
Nie zapomnij, aby nie używać generatorów identyfikacyjnych przy użyciu dwie argumentów ' save' –
Eh, prawy link to: http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/classic/Session.html#save(java.lang.Object, java.io. Serializable) – iryndin
Jedyny wariant 'Save()' przy użyciu dwóch argumentów przyjmuje ciąg, a następnie sam obiekt ... nie klucz. – Nyerguds