Il session.save(object) restituisce l'id dell'oggetto o in alternativa è possibile chiamare il metodo getter id dopo aver eseguito un salvataggio.
Save() Valore restituito:
Serializable save(Object object) throws HibernateException
Returns: metodo
the generated identifier
Getter esempio:
UserDetails entità:
@Entity
public class UserDetails {
@Id
@GeneratedValue
private int id;
private String name;
// Constructor, Setters & Getters
}
logica per testare i 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); // 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();
uscita di questo codice:
prima di salvare: ID utente di = 0, 0
dopo il salvataggio: user id's = 1, 2
Come per questa uscita, si può vedere che le ID non sono stati fissati prima di salvare l'entità UserDetails
, una volta che si salvano le entità poi Hibernate fissati è la id per gli oggetti - user1
e user2
meno che non si chiude la sessione, è possibile ottenere l'oggetto attraverso il suo id, è ancora lì in sessione, e lo estrarrà da Sesison. –
Posso farlo. Ma continuo a pensare che il supporto in ibernazione recuperi l'id dopo l'inserimento. –
no, genererà l'id e l'oggetto sarà in sessione, sam etransaction sarà in grado di recuperarlo, provare almeno, vedere se si ottengono problemi –