Skip to content

Commit 10383fb

Browse files
committed
HHH-8434 CriteriaUpdate with multiple assignments incorrect
1 parent ceead77 commit 10383fb

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

hibernate-entitymanager/src/main/java/org/hibernate/jpa/criteria/CriteriaUpdateImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,12 @@ private void renderAssignments(StringBuilder jpaql, RenderingContext renderingCo
142142
jpaql.append( " set " );
143143
boolean first = true;
144144
for ( Assignment assignment : assignments ) {
145-
jpaql.append( assignment.attributePath.render( renderingContext ) )
146-
.append( " = " )
147-
.append( assignment.value.render( renderingContext ) );
148145
if ( ! first ) {
149146
jpaql.append( ", " );
150147
}
148+
jpaql.append( assignment.attributePath.render( renderingContext ) )
149+
.append( " = " )
150+
.append( assignment.value.render( renderingContext ) );
151151
first = false;
152152
}
153153
}

hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/criteria/ManipulationCriteriaTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.hibernate.jpa.test.metamodel.Customer;
4040
import org.hibernate.jpa.test.metamodel.Customer_;
4141
import org.hibernate.testing.SkipForDialect;
42+
import org.hibernate.testing.TestForIssue;
4243
import org.junit.Test;
4344

4445
/**
@@ -116,6 +117,24 @@ public void testNoAssignments() {
116117
em.getTransaction().rollback();
117118
em.close();
118119
}
120+
121+
@Test
122+
@TestForIssue(jiraKey = "HHH-8434")
123+
public void basicMultipleAssignments() {
124+
EntityManager em = getOrCreateEntityManager();
125+
em.getTransaction().begin();
126+
127+
CriteriaBuilder builder = em.getCriteriaBuilder();
128+
129+
CriteriaUpdate<Customer> updateCriteria = builder.createCriteriaUpdate( Customer.class );
130+
updateCriteria.from( Customer.class );
131+
updateCriteria.set( Customer_.name, "Bob" );
132+
updateCriteria.set( Customer_.age, 99 );
133+
em.createQuery( updateCriteria ).executeUpdate();
134+
135+
em.getTransaction().commit();
136+
em.close();
137+
}
119138

120139
@Test
121140
public void testJoinsAndFetchesDisallowed() {

0 commit comments

Comments
 (0)