Tôi muốn lưu một số Đối tượng vào cơ sở dữ liệu với các ID được xác định trước bằng Hibernate. Có thể làm điều đó bằng cách sử dụng phương pháp lưu của phiên Hibernate?Lưu đối tượng mới với Hibernate bằng cách sử dụng ID được cung cấp
Tôi biết có những cách giải quyết như sau:
1) thực hiện lệnh SQL với báo cáo chèn cần thiết:
insert into MyObj(id,name) values (100,'aaa'), (101,'bbb');
2) sử dụng truy vấn SQL trong 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;
}
}
Nhưng: là nó có thể làm mà không có SQLQuery?
Trong Hibernate tài liệu tham khảo trong phần 11.2. Making objects persistent có ví dụ về mã:
Ngoài ra, bạn có thể gán các định danh sử dụng phiên bản quá tải của 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));
Nhưng tôi không thể tìm thấy ví dụ về cách thực hiện việc này.
Vì vậy, có thể lưu các đối tượng mới với ID được cung cấp vào cơ sở dữ liệu với Hibernate không sử dụng truy vấn SQL không? Nếu có thì làm thế nào? Và làm thế nào để quá tải phiên phương pháp tiết kiệm() như đã đề cập trong tài liệu tham khảo Hibernate?
Cảm ơn!
Đừng quên không sử dụng máy phát điện ID khi sử dụng hai tham số ' save' –
Eh, liên kết phù hợp là: http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/classic/Session.html#save(java.lang.Object, java.io. Serializable) – iryndin
Biến thể duy nhất của 'Save()' bằng cách sử dụng hai args nhận một chuỗi và sau đó đối tượng chính nó ... không phải là một khóa. – Nyerguds