HHH-18027 Test mutation query reuse with parameter list expansions
This commit is contained in:
parent
3ba2958e5d
commit
e8d396ccbd
|
@ -0,0 +1,79 @@
|
|||
package org.hibernate.orm.test.jpa.query;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.Query;
|
||||
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
|
||||
import org.hibernate.testing.orm.junit.JiraKey;
|
||||
import org.hibernate.testing.orm.junit.Jpa;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
/**
|
||||
* @author Yanming Zhou
|
||||
*/
|
||||
|
||||
@Jpa(annotatedClasses = ReuseQueryWithExpandedParameterTest.Person.class)
|
||||
@JiraKey("HHH-18027")
|
||||
public class ReuseQueryWithExpandedParameterTest {
|
||||
|
||||
@Test
|
||||
public void reuseQueryWithExpandedParameter(EntityManagerFactoryScope scope) {
|
||||
scope.inTransaction( em -> {
|
||||
Person a = new Person( "a" );
|
||||
em.persist( a );
|
||||
Person b = new Person( "b" );
|
||||
em.persist( b );
|
||||
Person c = new Person( "c" );
|
||||
em.persist( c );
|
||||
Person d = new Person( "d" );
|
||||
em.persist( d );
|
||||
|
||||
Query q = em.createQuery( "from Person where name in (:names)" );
|
||||
assertEquals( 2, q.setParameter( "names", Set.of( "a", "b" ) ).getResultList().size() );
|
||||
assertEquals( 2, q.setParameter( "names", Set.of( "c", "d" ) ).getResultList().size() );
|
||||
|
||||
q = em.createQuery( "delete from Person where name in (:names)" );
|
||||
assertEquals( 2, q.setParameter( "names", Set.of( "a", "b" ) ).executeUpdate() );
|
||||
assertEquals( 2, q.setParameter( "names", Set.of( "c", "d" ) ).executeUpdate() );
|
||||
} );
|
||||
}
|
||||
|
||||
@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 void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue