hibernate - 保存对象后获取id [英] hibernate - get id after save object
问题描述
由于目的,我需要在插入后立即获取对象的ID。我可以解决这个问题:
session.save(Object o)//插入数据库
findByPorperty( o.property)//返回插入的对象以及id
我认为上面的代码不是因为会话需要重新打开才能找到对象。所以:
- 有没有更好的方式获取id?
- 如果有,我可以吗应用相同的策略在插入一包对象后获得id列表 session.save(object)返回对象的id,或者您可以在执行保存后调用id getter方法。
- Is there a better way obtain the id?
- If there is, can I apply the same strategy to obtain a list of ids after inserting a bag of object?
$ b Save()返回值:
可序列化保存(Object object)抛出HibernateException
返回:
生成的标识符
Getter方法示例:
UserDetails实体:
@Entity
public class UserDetails {
@Id
@GeneratedValue
私人i nt id;
私人字符串名称;
//构造函数,Setters& Getters
}
用于测试ID的逻辑:
Session session = HibernateUtil.getSessionFactory()。getCurrentSession();
session.getTransaction()。begin();
UserDetails user1 = new UserDetails(user1);
UserDetails user2 = new UserDetails(user2);
// int userId =(Integer)session.save(user1); //如果你想把id保存到变量
System.out.println(save:user id's =+ user1.getId()+,+ user2.getId() );
session.save(user1);
session.save(user2);
System.out.println(save:user id's =+ user1.getId()+,+ user2.getId());
session.getTransaction()。commit();
此代码的输出:
保存之前:用户ID = 0,0
保存之后:用户标识号为1,2
根据这个输出,你可以看到在我们保存 UserDetails
实体之前没有设置id,一旦你保存了实体,那么Hibernate设置了你的id对象 - user1
和 user2
Because of an purpose, I need to get an id of an object right after an insertion. I can work around with this code:
session.save(Object o) // insert to database
findByPorperty( o.property ) // Return the inserted object along with the id
I think the above code is not sufficient because the session need to reopen to find the object. So:
The session.save(object) returns the id of the object, or you could alternatively call the id getter method after performing a save.
Save() return value:
Serializable save(Object object) throws HibernateException
Returns:
the generated identifier
Getter method example:
UserDetails entity:
@Entity
public class UserDetails {
@Id
@GeneratedValue
private int id;
private String name;
// Constructor, Setters & Getters
}
Logic to test the id's :
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.getTransaction().begin();
UserDetails user1 = new UserDetails("user1");
UserDetails user2 = new UserDetails("user2");
//int userId = (Integer) session.save(user1); // if you want to save the id to some variable
System.out.println("before save : user id's = "+user1.getId() + " , " + user2.getId());
session.save(user1);
session.save(user2);
System.out.println("after save : user id's = "+user1.getId() + " , " + user2.getId());
session.getTransaction().commit();
Output of this code:
before save : user id's = 0 , 0
after save : user id's = 1 , 2
As per this output, you can see that the id's were not set before we save the UserDetails
entity, once you save the entities then Hibernate set's the id's for your objects - user1
and user2
这篇关于hibernate - 保存对象后获取id的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!