HHH-12660 - Missing verb in reference documentation
HHH-12715 - Error in documentation sample code about JPQL and HQL HHH-12691 - Code block is broken in documentation about AUTO flushing
This commit is contained in:
parent
1855d23aef
commit
c89a362d56
|
@ -324,7 +324,7 @@ In the `persistence.xml` configuration file above, the `orm.xml` XML file contai
|
|||
|
||||
As previously seen, the Hibernate native bootstrap mechanism allows you to customize a great variety of configurations which are passed via the `Metadata` object.
|
||||
|
||||
When you Hibernate as a JPA provider, the `EntityManagerFactory` is backed by a `SessionFactory`. For this reason, you might still want to use the `Metadata` object to pass various settings which cannot be supplied via the standard Hibernate <<appendices/Configurations.adoc, configuration settings>>.
|
||||
When using Hibernate as a JPA provider, the `EntityManagerFactory` is backed by a `SessionFactory`. For this reason, you might still want to use the `Metadata` object to pass various settings which cannot be supplied via the standard Hibernate <<appendices/Configurations.adoc, configuration settings>>.
|
||||
|
||||
For this reason, you can use the
|
||||
https://docs.jboss.org/hibernate/orm/{majorMinorVersion}/javadocs/org/hibernate/boot/spi/MetadataBuilderContributor.html[`MetadataBuilderContributor`] class as you can see in the following examples.
|
||||
|
|
|
@ -121,14 +121,15 @@ include::{sourcedir}/AutoFlushTest.java[tags=flushing-auto-flush-sql-example]
|
|||
----
|
||||
====
|
||||
|
||||
The `Session` API doesn't trigger an `AUTO` flush when executing a native query
|
||||
If you bootstrap Hibernate natively, and not through JPA, by default,
|
||||
the `Session` API will trigger a flush automatically when executing a native query.
|
||||
|
||||
[[flushing-auto-flush-sql-native-example]]
|
||||
.Automatic flushing on native SQL using `Session`
|
||||
====
|
||||
[source, JAVA, indent=0]
|
||||
----
|
||||
include::{sourcedir}/AutoFlushTest.java[tags=flushing-auto-flush-sql-native-example]
|
||||
include::{sourcedir}/HibernateAutoFlushTest.java[tags=flushing-auto-flush-sql-native-example]
|
||||
----
|
||||
====
|
||||
|
||||
|
|
|
@ -125,7 +125,7 @@ public class AutoFlushTest extends BaseEntityManagerFunctionalTestCase {
|
|||
entityManager.persist( person );
|
||||
Session session = entityManager.unwrap(Session.class);
|
||||
|
||||
// for this to work, the Session/EntityManager must be put into COMMIT FlushMode
|
||||
// For this to work, the Session/EntityManager must be put into COMMIT FlushMode
|
||||
// - this is a change since 5.2 to account for merging EntityManager functionality
|
||||
// directly into Session. Flushing would be the JPA-spec compliant behavior,
|
||||
// so we know do that by default.
|
||||
|
@ -136,7 +136,7 @@ public class AutoFlushTest extends BaseEntityManagerFunctionalTestCase {
|
|||
assertTrue(((Number) session
|
||||
.createNativeQuery( "select count(*) from Person")
|
||||
.uniqueResult()).intValue() == 0 );
|
||||
//end::flushing-auto-flush-sql-native-example[\]
|
||||
//end::flushing-auto-flush-sql-native-example[]
|
||||
} );
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,113 @@
|
|||
/*
|
||||
* 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 <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
package org.hibernate.userguide.flush;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.EntityTransaction;
|
||||
import javax.persistence.FlushModeType;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase;
|
||||
|
||||
import org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.hibernate.testing.transaction.TransactionUtil.doInHibernate;
|
||||
import static org.hibernate.testing.transaction.TransactionUtil.doInJPA;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* @author Vlad Mihalcea
|
||||
*/
|
||||
public class HibernateAutoFlushTest extends BaseNonConfigCoreFunctionalTestCase {
|
||||
|
||||
@Override
|
||||
protected Class<?>[] getAnnotatedClasses() {
|
||||
return new Class<?>[] {
|
||||
Person.class,
|
||||
Advertisement.class
|
||||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFlushAutoSQLNativeSession() {
|
||||
doInHibernate( this::sessionFactory, session -> {
|
||||
session.createNativeQuery( "delete from Person" ).executeUpdate();;
|
||||
} );
|
||||
doInHibernate( this::sessionFactory, session -> {
|
||||
log.info( "testFlushAutoSQLNativeSession" );
|
||||
//tag::flushing-auto-flush-sql-native-example[]
|
||||
assertTrue(((Number) session
|
||||
.createNativeQuery( "select count(*) from Person")
|
||||
.getSingleResult()).intValue() == 0 );
|
||||
|
||||
Person person = new Person( "John Doe" );
|
||||
session.persist( person );
|
||||
|
||||
assertTrue(((Number) session
|
||||
.createNativeQuery( "select count(*) from Person")
|
||||
.uniqueResult()).intValue() == 0 );
|
||||
//end::flushing-auto-flush-sql-native-example[]
|
||||
} );
|
||||
}
|
||||
|
||||
//tag::flushing-auto-flush-jpql-entity-example[]
|
||||
@Entity(name = "Person")
|
||||
public static class Person {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
public Person() {}
|
||||
|
||||
public Person(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Entity(name = "Advertisement")
|
||||
public static class Advertisement {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Long id;
|
||||
|
||||
private String title;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
}
|
||||
//end::flushing-auto-flush-jpql-entity-example[]
|
||||
}
|
|
@ -416,6 +416,7 @@ public class HQLTest extends BaseEntityManagerFunctionalTestCase {
|
|||
.getResultList();
|
||||
//end::hql-collection-valued-associations[]
|
||||
assertEquals(1, phones.size());
|
||||
assertEquals( "123-456-7890", phones.get( 0 ).getNumber() );
|
||||
});
|
||||
|
||||
}
|
||||
|
@ -430,7 +431,7 @@ public class HQLTest extends BaseEntityManagerFunctionalTestCase {
|
|||
|
||||
// alternate syntax
|
||||
List<Phone> phones = session.createQuery(
|
||||
"select pr " +
|
||||
"select ph " +
|
||||
"from Person pr, " +
|
||||
"in (pr.phones) ph, " +
|
||||
"in (ph.calls) c " +
|
||||
|
@ -441,6 +442,7 @@ public class HQLTest extends BaseEntityManagerFunctionalTestCase {
|
|||
.list();
|
||||
//end::hql-collection-valued-associations[]
|
||||
assertEquals(1, phones.size());
|
||||
assertEquals( "123-456-7890", phones.get( 0 ).getNumber() );
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue