Spring-HIbernate entity-id, bevor die Entität persistiert wird

Wie Kriege ich die id des neu persistenten Entity, bevor die Transaktion ist abgeschlossen, wenn das mit der @Transactional annotation.?

Sagen wir ich habe eine Tabelle User mit seiner id generiert wird, die durch Datenbank-Sequenz..

User.java

 @Entity
 public class User {
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="USERSEQ")
    @SequenceGenerator(name="USERSEQ", sequenceName = "USERSEQ")
    @Column(name="ID", nullable=false)
    private int id;

    @Column(name="FIRSTNAME", nullable=false)
    private String firstName;

    @Column(name="LASTNAME", nullable=false)
    private String lastName;
  }

Ich will etwas tun, wie dies in der service Klasse.. bestehen das user-Objekt, dann bekommt man die id der Entität, fügen Sie es in das audit-Objekt und dann beibehalten.. Aber das Problem ist, dass Benutzer-Objekt ist nicht wirklich beibehalten, so dass die id Hinzugefügt, um die audit-Objekt ist nicht die Reale id des neuen Benutzers aufzeichnen.

UserService.java

  @Transactional
  public void addUser(User newUser, UserAudit userAudit ){
         newUser = userDao.addUser(newUser);
         userAudit.setUserId(newUser.getId());
         userAuditDao.addUserAudit(userAudit);
  }

Ich versuchte, Spülen Sie die Sitzung, bevor Sie den Benutzer-Objekt aus der dao-Schicht, aber es scheint nicht zu funktionieren...

UserDao.java

  public User addUser(User user){
     Session session = sessionFactory.getCurrentSession();
     user = (User) session.merge(user);
      session.flush();
    return user;
  }

Also, was muss ich hier zum abrufen von id in der service-Ebene, bevor die Transaktion abgeschlossen ist? TIA.

InformationsquelleAutor RKodakandla | 2011-11-02

Schreibe einen Kommentar