JPA and Postgres sequence pre-allocation size setup incorrectly

ejb, glassfish-4, jpa, postgresql, sequence

Solution

Changing the value of INCREMENT from 1 to 50 into my Postgres sequence resolved the issue. As suggested by @unwichtich it is a good idea to specify allocationSize=50 attribute through the @SequenceGenerator annotation.

Problem

I am not able to perist any Entity because of a problem with sequence. I use Glssfish 4, Postgres 9.3 + JPA + EJB3 and Netbeans 8. Below the excpeption: ``` Finest: persist() operation called on: MyUser{id=null, email=a@e.it, password=test, firstname=test, lastname=test, company=Test}. Finest: Execute query ValueReadQuery(sql="select nextval('mom_seq_id')") Finest: Connection acquired from connection pool [read]. Finest: reconnecting to external connection pool Fine: select nextval(mom_seq_id) Finest: Connection released to connection pool [read]. Warning: Local Exception Stack: Exception [EclipseLink-7027] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.ValidationException Exception Description: The sequence named [mom_seq_id] is setup incorrectly. Its increment does not match its pre-allocation size. at org.eclipse.persistence.exceptions.ValidationException.sequenceSetupIncorrectly(ValidationException.java:1604) at org.eclipse.persistence.sequencing.StandardSequence.createVector(StandardSequence.java:96) ... ``` The sequence on Postgres: ``` CREATE SEQUENCE my_seq_id INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 27 CACHE 1; ALTER TABLE my_seq_id OWNER TO postgres; COMMENT ON SEQUENCE my_seq_id IS 'Sequence for autoincrement id on MyClass'; ``` And an extract of my Entity: ``` @Entity @Table(name = "myuser") @XmlRootElement public class MyUser implements Serializable { private static final long serialVersionUID = 1L; @Id @SequenceGenerator(name="MYSEQ", sequenceName="my_seq_id") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="MYSEQ") @Basic(optional = false) @Column(name = "id") private Integer id; ``` Can anyone explain what is wrong? Thanks I resolved my issue but I don't know why! I saw that the default value of allocationSize() is 50: ``` package javax.persistence; @Target(value = {ElementType.TYPE, ElementType.METHOD, ElementType.FIELD}) @Retention(value = RetentionPolicy.RUNTIME) public @interface SequenceGenerator { public String name(); public String sequenceName() default ""; public String catalog() default ""; public String schema() default ""; public int initialValue() default 1; public int allocationSize() default 50; } ``` And I have updated my Postgres sequence `increment_by` value from 1 to 50 and now it works!

Original source