gpt4 book ai didi

java - 使用提供的 ID 使用 Hibernate 保存新对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:19:00 25 4
gpt4 key购买 nike

我想使用 Hibernate 将一些对象保存到具有预定义 ID 的数据库中。是否可以使用 Hibernate session 的保存方法来做到这一点?

我知道有以下解决方法:

1) 使用必要的插入语句执行 SQL 脚本:

insert into MyObj(id,name) values (100,'aaa'), (101,'bbb');

2) 在 Hibernate 中使用 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?

在 Hibernate 引用中的 11.2. Making objects persistent 部分有代码示例:

Alternatively, you can assign the identifier using an overloaded version of 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) );

但我找不到如何执行此操作的示例。

那么,是否可以在不使用 SQL 查询的情况下使用 Hibernate 将具有提供的 ID 的新对象保存到数据库中?如果是那么如何?以及如何重载 Hibernate 引用中提到的 session 方法 save() ?

谢谢!

最佳答案

文档要求您不要自己覆盖save,而是使用带有两个参数的save 的变体。有关详细信息,请参阅 [JavaDocs][1]。

YourEntity entity = // ..
entity.setFoo(foo);
entity.setBar(bar);
//..
session.save(entity, theIDYouWantToUse);

[1]: http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/Session.html#save(java.lang.String , java.lang.Object)

关于java - 使用提供的 ID 使用 Hibernate 保存新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4047175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com