HHH-17826 Add test for issue
This commit is contained in:
parent
b300b9d45a
commit
27a9ec209e
|
@ -0,0 +1,108 @@
|
|||
package org.hibernate.orm.test.iterate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.ScrollMode;
|
||||
import org.hibernate.ScrollableResults;
|
||||
import org.hibernate.query.spi.QueryImplementor;
|
||||
|
||||
import org.hibernate.testing.orm.junit.DomainModel;
|
||||
import org.hibernate.testing.orm.junit.Jira;
|
||||
import org.hibernate.testing.orm.junit.SessionFactory;
|
||||
import org.hibernate.testing.orm.junit.SessionFactoryScope;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.FetchType;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.ManyToOne;
|
||||
import jakarta.persistence.OneToMany;
|
||||
|
||||
@DomainModel(
|
||||
annotatedClasses = {
|
||||
ForwardOnlyScrollNoTransactionTest.Father.class,
|
||||
ForwardOnlyScrollNoTransactionTest.Son.class
|
||||
}
|
||||
)
|
||||
@SessionFactory
|
||||
@Jira("HHH-17826")
|
||||
public class ForwardOnlyScrollNoTransactionTest {
|
||||
|
||||
@BeforeAll
|
||||
public void setUp(SessionFactoryScope scope) {
|
||||
scope.inTransaction(
|
||||
session -> {
|
||||
Son son = new Son( "Andrea" );
|
||||
Father father = new Father( "Lionello" );
|
||||
father.addSon( son );
|
||||
session.persist( father );
|
||||
|
||||
Son son1 = new Son( "Alberto" );
|
||||
Father father1 = new Father( "Roberto" );
|
||||
father1.addSon( son1 );
|
||||
session.persist( father1 );
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScroll(SessionFactoryScope scope) {
|
||||
scope.inSession(
|
||||
session -> {
|
||||
QueryImplementor query = session.createQuery( "select f from Father f" );
|
||||
|
||||
try (ScrollableResults result = query.scroll( ScrollMode.FORWARD_ONLY )) {
|
||||
while ( result.next() ) {
|
||||
result.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Entity(name = "Father")
|
||||
public static class Father {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Integer id;
|
||||
|
||||
private String name;
|
||||
|
||||
@OneToMany(mappedBy = "father", fetch = FetchType.EAGER)
|
||||
public List<Son> sons = new ArrayList<>();
|
||||
|
||||
public Father() {
|
||||
}
|
||||
|
||||
public Father(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void addSon(Son son) {
|
||||
sons.add( son );
|
||||
son.father = this;
|
||||
}
|
||||
}
|
||||
|
||||
@Entity(name = "Son")
|
||||
public static class Son {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Integer id;
|
||||
|
||||
private String name;
|
||||
|
||||
@ManyToOne
|
||||
private Father father;
|
||||
|
||||
public Son() {
|
||||
}
|
||||
|
||||
public Son(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue