La persistance d'une entité lors de l'ID est null et généré automatiquement dans la base de données

Je suis en utilisant EclipseLink avec JavaDB et chaque fois que j'essaie de conserver une nouvelle entité user, j'obtiens une erreur concernant le fait que le champ ID de la nouvelle entité utilisateur est null. Je sais que c'est nul -- et elle doit être parce que le champ ID est généré comme l'Identité dans la base de données. Ou je me trompe? J'ai essayé d'ajouter @GeneratedValue à l'entité mais qui provoque les erreurs quelle que soit la génération de la stratégie utilisée. J'ai aussi regardé ici, ici, et ici mais ces questions ne semblent pas se rapporter entièrement à ma question. Les exceptions ci-dessous se produisent toujours à l'appel à l'EntityManager.persist(utilisateur).

J'ai aussi essayé de l'enlever @NotNull et @GeneratedValue et, curieusement, il a passé le persistent, appeler-mais seulement à l'échec sur le commettre. Aussi loin que je peux dire que j'ai tout mis à droite. Donc la question est: pourquoi est-ce de l'application défaillante pour ajouter un nouvel utilisateur et que dois-je faire pour le réparer?

Entité utilisateur:

 @Entity(name = "User")
 @Table(name = "USERS")
 public class User implements Serializable {
     private static final long serialVersionUID = 1L;
     @Id
     @Basic(optional = false)
     @NotNull
     @Column(name = "IDENTIFIER", nullable = false,unique = true)
     private Long identifier;
     //class shortened for brevity
}

Correspondant à ce Script SQL:

create table "USERSDBADMIN".USERS
(
        IDENTIFIER BIGINT not null primary key GENERATED ALWAYS AS IDENTITY 
            (START WITH 0, INCREMENT BY 1),
        USERNAME VARCHAR(50) not null,
        EMAIL VARCHAR(150) not null,
        LASTLOGIN DATE default NULL
);

De l'utilisateur de la Méthode Create (à partir de l'APP controller):

public void create(User user) throws PreexistingEntityException, RollbackFailureException, Exception {
    EntityManager em = null;
    try {
        utx.begin();
        em = getEntityManager();
        em.persist(user);
        utx.commit();
    } catch (Exception ex) {
        try {
            utx.rollback();
        } catch (Exception re) {
            throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re);
        }
        if (findUser(user.getIdentifier()) != null) {
            throw new PreexistingEntityException("User " + user + " already exists.", ex);
        }
        throw ex;
    } finally {
        if (em != null) {
            em.close();
        }
    }
}

GenerationStrategy.L'identité d'erreur (ce qui revient à dire que le champ ID est null):

ex = (javax.validation.ConstraintViolationException) javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on callback event:'prePersist'. Please refer to embedded ConstraintViolations for details.

GenerationStrategy.Erreur de séquence (Tableau Auto et produire de la même exception):

ex = (org.eclipse.persistence.exceptions.DatabaseException) Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException. Internal Exception: java.sql.SQLSyntaxErrorException: SEQUENCE 'SEQ_GEN_SEQUENCE' does not exist. Call: VALUES(NEXT VALUE FOR SEQ_GEN_SEQUENCE) Query: ValueReadQuery(sql="VALUES(NEXT VALUE FOR SEQ_GEN_SEQUENCE)")

OriginalL'auteur Richard Barker | 2014-12-21