Ich habe den folgenden Service...
@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();
}
}
Wenn ich kein em.flush() setze, wird die Zeile token.getId() null zurückgeben (Verwendung der generierten Sequenz der Datenbank), obwohl ich weiß, dass wenn ich Token anstelle von String an den aufrufenden Service zurückgebe, die ID gesetzt ist. Es scheint also, dass EM flushes, wenn der Service ein Token-Objekt zurückgibt, aber nicht, wenn ich einen String setze. Indem ich flush setze, bekomme ich, was ich brauche. Ist das richtig so?