HHH-12700 - Missing property in sample code in documentation of bulk-id strategies

This commit is contained in:
Vlad Mihalcea 2018-06-18 16:41:24 +03:00
parent f0a31fbc3d
commit d4861fed9f
4 changed files with 36 additions and 15 deletions

View File

@ -317,7 +317,7 @@ The `Person` entity is the base class of this entity inheritance model, and is m
==== ====
[source, JAVA, indent=0] [source, JAVA, indent=0]
---- ----
include::{bulkid-sourcedir}/AbstractBulkIdTest.java[tags=batch-bulk-hql-temp-table-base-class-example] include::{bulkid-sourcedir}/AbstractBulkCompositeIdTest.java[tags=batch-bulk-hql-temp-table-base-class-example]
---- ----
==== ====
@ -328,7 +328,7 @@ Both the `Doctor` and `Engineer` entity classes extend the `Person` base class:
==== ====
[source, JAVA, indent=0] [source, JAVA, indent=0]
---- ----
include::{bulkid-sourcedir}/AbstractBulkIdTest.java[tags=batch-bulk-hql-temp-table-sub-classes-example] include::{bulkid-sourcedir}/AbstractBulkCompositeIdTest.java[tags=batch-bulk-hql-temp-table-sub-classes-example]
---- ----
==== ====
@ -342,7 +342,7 @@ Now, when you try to execute a bulk entity delete query:
==== ====
[source, JAVA, indent=0] [source, JAVA, indent=0]
---- ----
include::{bulkid-sourcedir}/AbstractBulkIdTest.java[tags=batch-bulk-hql-temp-table-delete-query-example] include::{bulkid-sourcedir}/AbstractBulkCompositeIdTest.java[tags=batch-bulk-hql-temp-table-delete-query-example]
---- ----
[source, SQL, indent=0] [source, SQL, indent=0]

View File

@ -3,7 +3,6 @@ package org.hibernate.test.bulkid;
import java.io.Serializable; import java.io.Serializable;
import java.util.Objects; import java.util.Objects;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.Inheritance; import javax.persistence.Inheritance;
import javax.persistence.InheritanceType; import javax.persistence.InheritanceType;
@ -12,8 +11,6 @@ import org.hibernate.cfg.AvailableSettings;
import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Configuration;
import org.hibernate.hql.spi.id.MultiTableBulkIdStrategy; import org.hibernate.hql.spi.id.MultiTableBulkIdStrategy;
import org.hibernate.testing.DialectChecks;
import org.hibernate.testing.RequiresDialectFeature;
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@ -77,7 +74,7 @@ public abstract class AbstractBulkCompositeIdTest extends BaseCoreFunctionalTest
} }
protected int entityCount() { protected int entityCount() {
return 100; return 4;
} }
@Test @Test
@ -95,9 +92,12 @@ public abstract class AbstractBulkCompositeIdTest extends BaseCoreFunctionalTest
@Test @Test
public void testDeleteFromPerson() { public void testDeleteFromPerson() {
doInHibernate( this::sessionFactory, session -> { doInHibernate( this::sessionFactory, session -> {
int updateCount = session.createQuery( "delete from Person where employed = :employed" ) //tag::batch-bulk-hql-temp-table-delete-query-example[]
int updateCount = session.createQuery(
"delete from Person where employed = :employed" )
.setParameter( "employed", false ) .setParameter( "employed", false )
.executeUpdate(); .executeUpdate();
//end::batch-bulk-hql-temp-table-delete-query-example[]
assertEquals( entityCount(), updateCount ); assertEquals( entityCount(), updateCount );
}); });
} }
@ -112,6 +112,7 @@ public abstract class AbstractBulkCompositeIdTest extends BaseCoreFunctionalTest
}); });
} }
//tag::batch-bulk-hql-temp-table-base-class-example[]
@Entity(name = "Person") @Entity(name = "Person")
@Inheritance(strategy = InheritanceType.JOINED) @Inheritance(strategy = InheritanceType.JOINED)
public static class Person implements Serializable { public static class Person implements Serializable {
@ -176,7 +177,9 @@ public abstract class AbstractBulkCompositeIdTest extends BaseCoreFunctionalTest
return Objects.hash( getId(), getCompanyName() ); return Objects.hash( getId(), getCompanyName() );
} }
} }
//end::batch-bulk-hql-temp-table-base-class-example[]
//tag::batch-bulk-hql-temp-table-sub-classes-example[]
@Entity(name = "Doctor") @Entity(name = "Doctor")
public static class Doctor extends Person { public static class Doctor extends Person {
} }
@ -194,4 +197,5 @@ public abstract class AbstractBulkCompositeIdTest extends BaseCoreFunctionalTest
this.fellow = fellow; this.fellow = fellow;
} }
} }
//end::batch-bulk-hql-temp-table-sub-classes-example[]
} }

View File

@ -10,8 +10,6 @@ import org.hibernate.cfg.AvailableSettings;
import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Configuration;
import org.hibernate.hql.spi.id.MultiTableBulkIdStrategy; import org.hibernate.hql.spi.id.MultiTableBulkIdStrategy;
import org.hibernate.testing.DialectChecks;
import org.hibernate.testing.RequiresDialectFeature;
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@ -89,12 +87,10 @@ public abstract class AbstractBulkIdTest extends BaseCoreFunctionalTestCase {
@Test @Test
public void testDeleteFromPerson() { public void testDeleteFromPerson() {
doInHibernate( this::sessionFactory, session -> { doInHibernate( this::sessionFactory, session -> {
//tag::batch-bulk-hql-temp-table-delete-query-example[]
int updateCount = session.createQuery( int updateCount = session.createQuery(
"delete from Person where employed = :employed" ) "delete from Person where employed = :employed" )
.setParameter( "employed", false ) .setParameter( "employed", false )
.executeUpdate(); .executeUpdate();
//end::batch-bulk-hql-temp-table-delete-query-example[]
assertEquals( entityCount(), updateCount ); assertEquals( entityCount(), updateCount );
}); });
} }
@ -109,7 +105,6 @@ public abstract class AbstractBulkIdTest extends BaseCoreFunctionalTestCase {
}); });
} }
//tag::batch-bulk-hql-temp-table-base-class-example[]
@Entity(name = "Person") @Entity(name = "Person")
@Inheritance(strategy = InheritanceType.JOINED) @Inheritance(strategy = InheritanceType.JOINED)
public static class Person { public static class Person {

View File

@ -0,0 +1,22 @@
package org.hibernate.test.bulkid;
import org.hibernate.dialect.PostgreSQL82Dialect;
import org.hibernate.hql.spi.id.MultiTableBulkIdStrategy;
import org.hibernate.hql.spi.id.global.GlobalTemporaryTableBulkIdStrategy;
import org.hibernate.hql.spi.id.inline.InlineIdsInClauseBulkIdStrategy;
import org.hibernate.testing.DialectChecks;
import org.hibernate.testing.RequiresDialect;
import org.hibernate.testing.RequiresDialectFeature;
/**
* @author Vlad Mihalcea
*/
@RequiresDialect(PostgreSQL82Dialect.class)
public class GlobalTemporaryTableBulkCompositeIdTest extends AbstractBulkCompositeIdTest {
@Override
protected Class<? extends MultiTableBulkIdStrategy> getMultiTableBulkIdStrategyClass() {
return GlobalTemporaryTableBulkIdStrategy.class;
}
}