Bael 5911 (#16299)
* BAEL-7490 read write file in separate thread * Change the to try resources * Update the code to sync with article * get next val * get next val
This commit is contained in:
parent
2fca380422
commit
e34eb87e8e
@ -0,0 +1,24 @@
|
||||
package com.baeldung.spring.data.jpa.getnextseq;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.SequenceGenerator;
|
||||
|
||||
@Entity
|
||||
public class MyEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "mySeqGen")
|
||||
@SequenceGenerator(name = "mySeqGen", sequenceName = "my_sequence_name", allocationSize = 1)
|
||||
private Long id;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package com.baeldung.spring.data.jpa.getnextseq;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class MyEntityApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(MyEntityApplication.class);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.baeldung.spring.data.jpa.getnextseq;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface MyEntityRepository extends JpaRepository<MyEntity, Long> {
|
||||
|
||||
@Query(value = "SELECT NEXTVAL('my_sequence_name')", nativeQuery = true)
|
||||
Long getNextSequenceValue();
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.baeldung.spring.data.jpa.getnextseq;
|
||||
|
||||
import java.math.BigInteger;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.PersistenceContext;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class MyEntityService {
|
||||
|
||||
@PersistenceContext
|
||||
private EntityManager entityManager;
|
||||
|
||||
public Long getNextSequenceValue(String sequenceName) {
|
||||
BigInteger nextValue = (BigInteger) entityManager.createNativeQuery("SELECT NEXTVAL(:sequenceName)")
|
||||
.setParameter("sequenceName", sequenceName)
|
||||
.getSingleResult();
|
||||
return nextValue.longValue();
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
package com.baeldung.spring.data.jpa.getnextseq;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
import org.springframework.test.context.jdbc.Sql;
|
||||
|
||||
@SpringBootTest
|
||||
@ActiveProfiles("test")
|
||||
@Sql(scripts = "/testsequence.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
|
||||
public class MyEntityRepositoryIntegrationTest {
|
||||
@Autowired
|
||||
private MyEntityRepository myEntityRepository;
|
||||
|
||||
@Autowired
|
||||
private MyEntityService myEntityService;
|
||||
|
||||
@Test
|
||||
void whenUsingSequenceGenerator_thenNextValueReturned() {
|
||||
MyEntity entity = new MyEntity();
|
||||
myEntityRepository.save(entity);
|
||||
|
||||
long generatedId = entity.getId();
|
||||
assertNotNull(generatedId);
|
||||
assertEquals(1L, generatedId);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void whenUsingCustomQuery_thenNextValueReturned() {
|
||||
long generatedId = myEntityRepository.getNextSequenceValue();
|
||||
assertNotNull(generatedId);
|
||||
assertEquals(1L, generatedId);
|
||||
}
|
||||
|
||||
@Test
|
||||
void whenUsingEntityManager_thenNextValueReturned() {
|
||||
long generatedId = myEntityService.getNextSequenceValue("my_sequence_name");
|
||||
assertNotNull(generatedId);
|
||||
assertEquals(1L, generatedId);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
DROP SEQUENCE IF EXISTS my_sequence_name;
|
||||
|
||||
CREATE SEQUENCE my_sequence_name START 1;
|
Loading…
x
Reference in New Issue
Block a user