Quand l'EntityManager engager?

J'ai le service suivant...

@Stateless
@LocalBean
public class RandomService {

    @EJB RandomString stringTokenizer;

    @PersistenceContext
    EntityManager em;

    public String generate(Actions action)
    {
        Token token = new Token();
        token.setAction(action);
        token.setExpiry(new Date());
        token.setToken(stringTokenizer.randomize());

        em.persist(token);
        //em.flush();

        return String.format("%010d", token.getId()) + token.getToken();
    }
}

Si je ne mets pas em.flush (), puis la ligne de jeton.getId() renvoie la valeur null (à l'Aide de DB SÉQUENCE produite) même si je sais que si je retourne un Jeton à la place de la chaîne de l'appel de service, le code est défini. Il semble donc que les EM bouffées de chaleur lorsque le service retourne un jeton objet, mais pas quand je mets de la Chaîne. En mettant tire la chasse, j'obtiens ce que je veux, c'est que ce que le droit?

OriginalL'auteur user432024 | 2011-10-26