iry*_*din 8 java session hibernate
我想使用Hibernate将一些对象保存到具有预定义ID的数据库.是否可以使用Hibernate会话的save方法来实现?
我知道有以下解决方法:
1)使用必要的insert语句执行SQL脚本:
insert into MyObj(id,name) values (100,'aaa'), (101,'bbb');
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
但是:没有SQLQuery可以吗?
在第11.2节的Hibernate参考中.使对象持久存在代码示例:
或者,您可以使用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) );
Run Code Online (Sandbox Code Playgroud)
但我找不到如何做到这一点的例子.
那么,是否可以使用Hibernate不使用SQL查询将带有提供的ID的新对象保存到数据库?如果是,那怎么样?如何在Hibernate引用中提到的重载会话方法save()?
谢谢!
该文档要求您不要重写save
自己,而要使用save
带有两个参数的变量。有关更多详细信息,请参见[JavaDocs] [1]。
YourEntity entity = // ..
entity.setFoo(foo);
entity.setBar(bar);
//..
session.save(entity, theIDYouWantToUse);
Run Code Online (Sandbox Code Playgroud)
[1]:http : //docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/Session.html#save (java.lang.String,java.lang.Object)
归档时间: |
|
查看次数: |
17045 次 |
最近记录: |