Enregistrer un nouvel objet avec Hibernate à l'aide fournie ID

Je veux sauver quelques Objets de base de données prédéfinie de l'Id de l'utilisation d'Hibernate. Est-il possible de le faire à l'aide de méthode d'enregistrement de la session Hibernate?

Je sais qu'il existe des solutions de contournement suivantes:

1) exécuter le script SQL nécessaires les instructions insert:

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

2) l'utilisation de requêtes SQL en mode veille prolongée:

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;
  }
}

Mais: est-il possible de le faire sans SQLQuery?

En veille prolongée de référence dans la section 11.2. Fabrication d'objets persistants il est un exemple de code:

Alternativement, vous pouvez assigner le
identifiant en utilisant une version surchargée
de 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) );

Mais je n'arrivais pas à trouver d'exemple de comment faire cela.

Donc est-il possible d'enregistrer de nouveaux objets avec fourni Id de base de données avec Hibernate pas à l'aide d'une requête SQL? Si oui, alors comment?
Et comment surcharge session de la méthode save() comme mentionné dans Hibernate référence?

Merci!

OriginalL'auteur iryndin | 2010-10-28