HHH-8891 - Added test for issue (no fix required)
Signed-off-by: Jan Schatteman <jschatte@redhat.com>
This commit is contained in:
parent
7c7bf276bf
commit
babde79417
|
@ -0,0 +1,112 @@
|
|||
/*
|
||||
* 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.orm.test.jpa.criteria;
|
||||
|
||||
import org.hibernate.testing.jdbc.SQLStatementInspector;
|
||||
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
|
||||
import org.hibernate.testing.orm.junit.Jira;
|
||||
import org.hibernate.testing.orm.junit.Jpa;
|
||||
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.criteria.CriteriaBuilder;
|
||||
import jakarta.persistence.criteria.CriteriaQuery;
|
||||
import jakarta.persistence.criteria.Root;
|
||||
|
||||
/**
|
||||
* @author Jan Schatteman
|
||||
*/
|
||||
@Jpa(
|
||||
annotatedClasses = { WrappedEntityCriteriaTest.SimpleEntity.class, WrappedEntityCriteriaTest.SimpleEntityWrapper.class },
|
||||
useCollectingStatementInspector = true
|
||||
)
|
||||
@Jira( value = "https://hibernate.atlassian.net/browse/HHH-8891")
|
||||
public class WrappedEntityCriteriaTest {
|
||||
|
||||
@BeforeEach
|
||||
public void setup(EntityManagerFactoryScope scope) {
|
||||
scope.inTransaction(
|
||||
entityManager -> {
|
||||
SimpleEntity instance = new SimpleEntity("John");
|
||||
entityManager.persist( instance );
|
||||
instance = new SimpleEntity("Jack");
|
||||
entityManager.persist( instance );
|
||||
instance = new SimpleEntity("James");
|
||||
entityManager.persist( instance );
|
||||
instance = new SimpleEntity("Bill");
|
||||
entityManager.persist( instance );
|
||||
instance = new SimpleEntity("Harry");
|
||||
entityManager.persist( instance );
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
public void tearDown(EntityManagerFactoryScope scope) {
|
||||
scope.inTransaction(
|
||||
entityManager -> entityManager.createQuery( "delete from SimpleEntity" ).executeUpdate()
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test(EntityManagerFactoryScope scope) {
|
||||
scope.inEntityManager(
|
||||
entityManager -> {
|
||||
SQLStatementInspector sqlInspector = scope.getCollectingStatementInspector();
|
||||
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
|
||||
CriteriaQuery<SimpleEntityWrapper> query = criteriaBuilder.createQuery( SimpleEntityWrapper.class);
|
||||
Root<SimpleEntity> from = query.from(SimpleEntity.class);
|
||||
query.select(criteriaBuilder.construct( SimpleEntityWrapper.class, from));
|
||||
// the following should only execute 1 queries (as oposed to 1+n)
|
||||
sqlInspector.clear();
|
||||
entityManager.createQuery( query).getResultList();
|
||||
sqlInspector.assertExecutedCount( 1 );
|
||||
sqlInspector.assertIsSelect( 0 );
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Entity(name = "SimpleEntity")
|
||||
public static class SimpleEntity {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Integer id;
|
||||
private String name;
|
||||
protected SimpleEntity() {
|
||||
}
|
||||
public SimpleEntity(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
protected void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
public static class SimpleEntityWrapper {
|
||||
private final SimpleEntity instance;
|
||||
public SimpleEntityWrapper(SimpleEntity instance) {
|
||||
this.instance = instance;
|
||||
}
|
||||
public SimpleEntity getBrand() {
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue