Geha
Geha

Reputation: 1465

Getting next value from sequence with jpa repository in postgreSQL

I've seen the similar question, but in my situation it doesn't work. I need to get the next value of the sequence.

Model class:

@Entity
@Table(name = "item")
public class Item {
    @Id
    @SequenceGenerator(name = "id_seq", sequenceName = "item_id_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_seq")
    @Column(name = "id", updatable = false)
    protected Long id;
}

Jpa Repository:

public interface ItemRepository extends JpaRepository<Item, Long> {
    List<Item> findFirst10ByOrderByPublicationDateDesc();

    @Query(value = "SELECT item_id_seq.nextval FROM item", nativeQuery = 
    true)
    Long getNextSeriesId();
}

I would appreciate any help.

Upvotes: 10

Views: 20887

Answers (2)

Pravind Kumar
Pravind Kumar

Reputation: 911

The same issue I also faced. The DB has sequecne under schema and after adding schema it working fine. My code is like -

@Entity
@Table(name = "Contact", schema = "tshema")
public class ContactUs implements AppEntity {

    @Id
    @SequenceGenerator(name = "OID_SEQ", sequenceName = "CONTACTUS_OID_SEQ", allocationSize = 1, schema = "tshema")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "OID_SEQ")
    @Column(name = "oid", unique = true, nullable = false, updatable = false)
    private Long oid;
} 

Upvotes: 0

Geha
Geha

Reputation: 1465

I've found solution:

@Query(value = "SELECT nextval('item_id_seq')", nativeQuery =
            true)
    Long getNextSeriesId();

My mistake was that I used oracle syntax instead of postgreSQL, which I am using.

Upvotes: 19

Related Questions