HHH-15749 Add test for issue
This commit is contained in:
parent
cb35e0e734
commit
a2aca9127c
|
@ -0,0 +1,127 @@
|
|||
package org.hibernate.orm.test.jpa.criteria;
|
||||
|
||||
|
||||
import org.hibernate.testing.TestForIssue;
|
||||
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
|
||||
import org.hibernate.testing.orm.junit.Jpa;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.FetchType;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.JoinColumn;
|
||||
import jakarta.persistence.ManyToOne;
|
||||
import jakarta.persistence.Table;
|
||||
import jakarta.persistence.criteria.CriteriaBuilder;
|
||||
import jakarta.persistence.criteria.CriteriaQuery;
|
||||
import jakarta.persistence.criteria.Root;
|
||||
|
||||
@Jpa(
|
||||
annotatedClasses = {
|
||||
GroupByTest.Address.class,
|
||||
GroupByTest.Person.class
|
||||
}
|
||||
)
|
||||
@TestForIssue( jiraKey = "HHH-15749")
|
||||
public class GroupByTest {
|
||||
|
||||
@Test
|
||||
public void testGroupBy(EntityManagerFactoryScope scope) {
|
||||
scope.inTransaction(
|
||||
entityManager -> {
|
||||
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
|
||||
CriteriaQuery<Person> query = criteriaBuilder.createQuery( Person.class );
|
||||
Root<Person> root = query.from( Person.class );
|
||||
|
||||
query.groupBy(
|
||||
root.get( "address1" ),
|
||||
root.get( "address2" ),
|
||||
root.get( "name" )
|
||||
);
|
||||
|
||||
query.select( criteriaBuilder.construct(
|
||||
Person.class,
|
||||
root.get( "address1" ),
|
||||
root.get( "address2" ),
|
||||
root.get( "name" )
|
||||
) );
|
||||
|
||||
entityManager.createQuery( query ).getResultList();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Entity(name = "TestEntity")
|
||||
public static class Person {
|
||||
|
||||
@Id
|
||||
private Integer id;
|
||||
|
||||
private String name;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY, optional = false)
|
||||
@JoinColumn(name = "address1_id", nullable = false)
|
||||
private Address address1;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY, optional = false)
|
||||
@JoinColumn(name = "address2_id", nullable = false)
|
||||
private Address address2;
|
||||
|
||||
public Person() {
|
||||
}
|
||||
|
||||
public Person(Integer id, String name, Address address1, Address address2) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.address1 = address1;
|
||||
this.address2 = address2;
|
||||
}
|
||||
|
||||
public Person(Address address1, Address address2, String name) {
|
||||
this.address1 = address1;
|
||||
this.address2 = address2;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public Address getAddress1() {
|
||||
return address1;
|
||||
}
|
||||
|
||||
public Address getAddress2() {
|
||||
return address2;
|
||||
}
|
||||
}
|
||||
|
||||
@Entity(name = "Address")
|
||||
@Table(name = "ADRESS_TABLE")
|
||||
public static class Address {
|
||||
@Id
|
||||
private Integer id;
|
||||
|
||||
private String descriptiom;
|
||||
|
||||
public Address() {
|
||||
}
|
||||
|
||||
public Address(Integer id, String descriptiom) {
|
||||
this.id = id;
|
||||
this.descriptiom = descriptiom;
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getDescriptiom() {
|
||||
return descriptiom;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue