Skip to content

Commit ea6c230

Browse files
committed
HHH-15480: Add Test Case
1 parent 3b4da62 commit ea6c230

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
* Hibernate, Relational Persistence for Idiomatic Java
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.orm.test.envers.integration.modifiedflags;
8+
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
12+
import org.hibernate.orm.test.envers.Priority;
13+
import org.hibernate.orm.test.envers.entities.onetomany.ListRefEdEntity;
14+
import org.hibernate.orm.test.envers.entities.onetomany.ListRefIngEntity;
15+
16+
import org.hibernate.testing.TestForIssue;
17+
import org.junit.Test;
18+
19+
import jakarta.persistence.EntityManager;
20+
21+
import static org.hibernate.orm.test.envers.tools.TestTools.extractRevisionNumbers;
22+
import static org.hibernate.orm.test.envers.tools.TestTools.makeList;
23+
import static org.junit.Assert.assertEquals;
24+
25+
/**
26+
* @author Artёm Basov
27+
*/
28+
@TestForIssue(jiraKey = "HHH-15480")
29+
public class HasChangedOneToManyManualFlush extends AbstractModifiedFlagsEntityTest {
30+
private Integer id = null;
31+
32+
@Override
33+
protected Class<?>[] getAnnotatedClasses() {
34+
return new Class[] { ListRefEdEntity.class, ListRefIngEntity.class };
35+
}
36+
37+
@Test
38+
@Priority(10)
39+
public void initData() {
40+
EntityManager em = getEntityManager();
41+
42+
// Revision 1
43+
em.getTransaction().begin();
44+
ListRefEdEntity entity = new ListRefEdEntity( 1, "Revision 1" );
45+
entity.setReffering( new ArrayList<>() );
46+
em.persist( entity );
47+
em.getTransaction().commit();
48+
49+
id = entity.getId();
50+
51+
// Revision 2 - both properties (data and reffering) should be marked as modified.
52+
em.getTransaction().begin();
53+
entity = em.find( ListRefEdEntity.class, entity.getId() );
54+
entity.setData( "Revision 2" );
55+
ListRefIngEntity refIngEntity = new ListRefIngEntity( 1, "Revision 2", entity );
56+
em.persist( refIngEntity );
57+
entity.getReffering().add( refIngEntity );
58+
entity = em.merge( entity );
59+
em.flush();
60+
entity.setData( "Revision 2.1" );
61+
entity = em.merge( entity );
62+
em.flush();
63+
em.getTransaction().commit();
64+
65+
em.close();
66+
}
67+
68+
@Test
69+
public void testHasChangedOnDoubleFlush() {
70+
List list = queryForPropertyHasChanged( ListRefEdEntity.class, id, "reffering" );
71+
assertEquals( 2, list.size() );
72+
assertEquals( makeList( 1, 2 ), extractRevisionNumbers( list ) );
73+
}
74+
}

0 commit comments

Comments
 (0)