JPA: Comment faire pour obtenir l'Id après persistent dans la version autonome d'application java

C'est une application java autonome, pas d'application web. Alors quand j'ai persister l'objet comme ce

public <T> T create(T t) {
    em.getTransaction().begin();
    em.persist(t);
    em.flush();
    em.getTransaction().commit();
    return t;
}

La id à l'intérieur de la T t objet est toujours nulle, même si une nouvelle ligne avec les informations correctes et l'id est créé correctement à l'intérieur de la base de données. Habituellement dans mon application web qui utilisent @EJB, le id disponible juste après je persiste, car il persiste, l'entité objet dans mon contexte de persistance, je ne suis pas sûr si j'ai mon contexte de persistance ici?

C'est la façon dont je l'ai associé mon id à l'intérieur de mon @Classe d'Entité

@Id
@Basic(optional = false)
@Column(name = "ID")
private Long id;

aussi je fais l'id de cette table dans la base de données AUTO_INCREMENT, à l'instar de ce

CREATE TABLE Config
(
    ID int NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (ID)
)

C'est de cette façon-je obtenir mon EntityManager

EntityManagerFactory emf = Persistence.createEntityManagerFactory("CorePU");
em = emf.createEntityManager();

Voici ce que l'intérieur de mon persistence.xml

<persistence-unit name="CorePU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>    
<class>com.wf.docsys.core.model.Config</class>    
<properties>
  <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/XNINFODB"/>
  <property name="javax.persistence.jdbc.password" value="xxx"/>
  <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
  <property name="javax.persistence.jdbc.user" value="xxx"/>
</properties>

S'il vous plaît aider, je ne suis pas sûr de ce que j'ai fait de mal ici.

OriginalL'auteur Thang Pham | 2012-04-05