HHH-9169 : SQLServer2012Dialect creates sequences starting from Long.MIN_VALUE
This commit is contained in:
parent
d5e13ca5e4
commit
ed7144c025
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
<class name="Person">
|
<class name="Person">
|
||||||
<id name="id" type="long">
|
<id name="id" type="long">
|
||||||
<generator class="sequence"/>
|
<generator class="enhanced-sequence"/>
|
||||||
</id>
|
</id>
|
||||||
<property name="name" type="string"/>
|
<property name="name" type="string"/>
|
||||||
<property name="weight" type="integer"/>
|
<property name="weight" type="integer"/>
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE hibernate-mapping PUBLIC
|
||||||
|
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
|
||||||
|
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
|
||||||
|
|
||||||
|
<hibernate-mapping package="org.hibernate.test.id">
|
||||||
|
|
||||||
|
<class name="Person">
|
||||||
|
<id name="id" column="id">
|
||||||
|
<generator class="sequence">
|
||||||
|
<param name="parameters">start with 10</param>
|
||||||
|
</generator>
|
||||||
|
</id>
|
||||||
|
</class>
|
||||||
|
|
||||||
|
</hibernate-mapping>
|
|
@ -0,0 +1,42 @@
|
||||||
|
package org.hibernate.test.id;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.Transaction;
|
||||||
|
import org.hibernate.dialect.SQLServer2012Dialect;
|
||||||
|
import org.hibernate.testing.DialectChecks;
|
||||||
|
import org.hibernate.testing.RequiresDialect;
|
||||||
|
import org.hibernate.testing.RequiresDialectFeature;
|
||||||
|
import org.hibernate.testing.SkipForDialect;
|
||||||
|
import org.hibernate.testing.TestForIssue;
|
||||||
|
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class SQLServer2012SequenceGeneratorTest extends BaseCoreFunctionalTestCase {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getMappings() {
|
||||||
|
return new String[] { "id/SQLServer2012Person.hbm.xml" };
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SQL server requires that sequence be initialized to something other than the minimum value for the type
|
||||||
|
* (e.g., Long.MIN_VALUE). For generator = "sequence", the initial value must be provided as a parameter.
|
||||||
|
* For this test, the sequence is initialized to 10.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@TestForIssue(jiraKey = "HHH-8814")
|
||||||
|
@RequiresDialect(value=SQLServer2012Dialect.class)
|
||||||
|
public void testStartOfSequence() throws Exception {
|
||||||
|
Session s = openSession();
|
||||||
|
Transaction tx = s.beginTransaction();
|
||||||
|
final Person person = new Person();
|
||||||
|
s.persist(person);
|
||||||
|
tx.commit();
|
||||||
|
s.close();
|
||||||
|
|
||||||
|
assertTrue(person.getId() == 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -4,8 +4,10 @@ import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
import org.hibernate.Transaction;
|
import org.hibernate.Transaction;
|
||||||
|
import org.hibernate.dialect.SQLServer2012Dialect;
|
||||||
import org.hibernate.testing.DialectChecks;
|
import org.hibernate.testing.DialectChecks;
|
||||||
import org.hibernate.testing.RequiresDialectFeature;
|
import org.hibernate.testing.RequiresDialectFeature;
|
||||||
|
import org.hibernate.testing.SkipForDialect;
|
||||||
import org.hibernate.testing.TestForIssue;
|
import org.hibernate.testing.TestForIssue;
|
||||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@ -23,6 +25,10 @@ public class SequenceGeneratorTest extends BaseCoreFunctionalTestCase {
|
||||||
@Test
|
@Test
|
||||||
@TestForIssue(jiraKey = "HHH-8814")
|
@TestForIssue(jiraKey = "HHH-8814")
|
||||||
@RequiresDialectFeature(DialectChecks.SupportsSequences.class)
|
@RequiresDialectFeature(DialectChecks.SupportsSequences.class)
|
||||||
|
@SkipForDialect(
|
||||||
|
value= SQLServer2012Dialect.class,
|
||||||
|
comment="SQLServer2012Dialect initializes sequence to minimum value (e.g., Long.MIN_VALUE; Hibernate assumes it is uninitialized."
|
||||||
|
)
|
||||||
public void testStartOfSequence() throws Exception {
|
public void testStartOfSequence() throws Exception {
|
||||||
Session s = openSession();
|
Session s = openSession();
|
||||||
Transaction tx = s.beginTransaction();
|
Transaction tx = s.beginTransaction();
|
||||||
|
|
Loading…
Reference in New Issue