diff --git a/hibernate-core/src/test/java/org/hibernate/test/id/sequence/OptimizerTest.java b/hibernate-core/src/test/java/org/hibernate/test/id/sequence/OptimizerTest.java new file mode 100644 index 0000000000..2486b0486d --- /dev/null +++ b/hibernate-core/src/test/java/org/hibernate/test/id/sequence/OptimizerTest.java @@ -0,0 +1,71 @@ +/* + * Hibernate, Relational Persistence for Idiomatic Java + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later. + * See the lgpl.txt file in the root directory or . + */ +package org.hibernate.test.id.sequence; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; + +import org.hibernate.Session; + +import org.hibernate.testing.TestForIssue; +import org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase; +import org.junit.Test; + +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.junit.Assert.assertThat; + +/** + * @author Steve Ebersole + */ +public class OptimizerTest extends BaseNonConfigCoreFunctionalTestCase { + @Test + @TestForIssue( jiraKey = "HHH-10166" ) + public void testGenerationPastBound() { + Session session = openSession(); + session.getTransaction().begin(); + for (int i = 0; i < 100; i++) { + TheEntity entity = new TheEntity( Integer.toString( i ) ); + session.save( entity ); + } + session.getTransaction().commit(); + session.close(); + + session = openSession(); + session.getTransaction().begin(); + TheEntity number100 = session.get( TheEntity.class, 100 ); + assertThat( number100, notNullValue() ); + session.createQuery( "delete TheEntity" ).executeUpdate(); + session.getTransaction().commit(); + session.close(); + } + + @Override + protected Class[] getAnnotatedClasses() { + return new Class[] { TheEntity.class }; + } + + @Entity( name = "TheEntity" ) + @Table( name = "TheEntity" ) + public static class TheEntity { + @Id + @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "seq1" ) + @SequenceGenerator( name = "seq1", sequenceName = "the_sequence" ) + public Integer id; + public String someString; + + public TheEntity() { + } + + public TheEntity(String someString) { + this.someString = someString; + } + } +}