Skip to content

Commit e9f99a8

Browse files
committed
HHH-10111 - AttributeConverter based attributes are not marked for update when their state is modified
(cherry picked from commit 70c9c8e)
1 parent 4a19270 commit e9f99a8

File tree

6 files changed

+43
-36
lines changed

6 files changed

+43
-36
lines changed

hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/convert/BasicJodaTimeConversionTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import java.util.List;
1414
import java.util.Map;
1515
import javax.persistence.AttributeConverter;
16-
import javax.persistence.Column;
1716
import javax.persistence.Convert;
1817
import javax.persistence.Entity;
1918
import javax.persistence.EntityManager;
@@ -29,12 +28,12 @@
2928
import org.hibernate.type.descriptor.converter.AttributeConverterTypeAdapter;
3029

3130
import org.hibernate.testing.TestForIssue;
32-
3331
import org.junit.Test;
3432

3533
import org.joda.time.LocalDate;
34+
3635
import static org.hibernate.testing.junit4.ExtraAssertions.assertTyping;
37-
import static org.junit.Assert.assertEquals;
36+
import static org.junit.Assert.assertTrue;
3837

3938
/**
4039
* @author Steve Ebersole
@@ -89,22 +88,25 @@ public List<String> getManagedClassNames() {
8988
final AttributeConverterTypeAdapter type = assertTyping( AttributeConverterTypeAdapter.class, theDatePropertyType );
9089
assertTyping( JodaLocalDateConverter.class, type.getAttributeConverter() );
9190

91+
int previousCallCount = 0;
92+
9293
try {
9394
EntityManager em = emf.createEntityManager();
9495
em.getTransaction().begin();
9596
em.persist( new TheEntity( 1, new LocalDate() ) );
9697
em.getTransaction().commit();
9798
em.close();
9899

99-
assertEquals( 1, callsToConverter );
100+
assertTrue( previousCallCount < callsToConverter );
101+
previousCallCount = callsToConverter;
100102

101103
em = emf.createEntityManager();
102104
em.getTransaction().begin();
103105
em.find( TheEntity.class, 1 );
104106
em.getTransaction().commit();
105107
em.close();
106108

107-
assertEquals( 2, callsToConverter );
109+
assertTrue( previousCallCount < callsToConverter );
108110

109111
em = emf.createEntityManager();
110112
em.getTransaction().begin();

hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/convert/ExplicitDateConvertersTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import org.junit.Test;
3232

3333
import static org.hibernate.testing.junit4.ExtraAssertions.assertTyping;
34-
import static org.junit.Assert.assertEquals;
34+
import static org.junit.Assert.assertTrue;
3535

3636
/**
3737
* @author Steve Ebersole
@@ -93,22 +93,25 @@ public List<String> getManagedClassNames() {
9393
final AttributeConverterTypeAdapter type = assertTyping( AttributeConverterTypeAdapter.class, theDatePropertyType );
9494
assertTyping( LongToDateConverter.class, type.getAttributeConverter() );
9595

96+
int previousCallCount = 0;
97+
9698
try {
9799
EntityManager em = emf.createEntityManager();
98100
em.getTransaction().begin();
99101
em.persist( new Entity1( 1, "1", new Date() ) );
100102
em.getTransaction().commit();
101103
em.close();
102104

103-
assertEquals( 1, callsToConverter );
105+
assertTrue( previousCallCount < callsToConverter );
106+
previousCallCount = callsToConverter;
104107

105108
em = emf.createEntityManager();
106109
em.getTransaction().begin();
107110
em.find( Entity1.class, 1 );
108111
em.getTransaction().commit();
109112
em.close();
110113

111-
assertEquals( 2, callsToConverter );
114+
assertTrue( previousCallCount < callsToConverter );
112115

113116
em = emf.createEntityManager();
114117
em.getTransaction().begin();

hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/convert/ExplicitEnumConvertersTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
import java.net.MalformedURLException;
1010
import java.util.Arrays;
11-
import java.util.Date;
1211
import java.util.HashMap;
1312
import java.util.List;
1413
import java.util.Map;
@@ -31,7 +30,7 @@
3130
import org.junit.Test;
3231

3332
import static org.hibernate.testing.junit4.ExtraAssertions.assertTyping;
34-
import static org.junit.Assert.assertEquals;
33+
import static org.junit.Assert.assertTrue;
3534

3635
/**
3736
* @author Steve Ebersole
@@ -101,22 +100,25 @@ public List<String> getManagedClassNames() {
101100
final AttributeConverterTypeAdapter type = assertTyping( AttributeConverterTypeAdapter.class, theDatePropertyType );
102101
assertTyping( MediaTypeConverter.class, type.getAttributeConverter() );
103102

103+
int previousCallCount = 0;
104+
104105
try {
105106
EntityManager em = emf.createEntityManager();
106107
em.getTransaction().begin();
107108
em.persist( new Entity1( 1, "300", MediaType.VIDEO ) );
108109
em.getTransaction().commit();
109110
em.close();
110111

111-
assertEquals( 1, callsToConverter );
112+
assertTrue( previousCallCount < callsToConverter );
113+
previousCallCount = callsToConverter;
112114

113115
em = emf.createEntityManager();
114116
em.getTransaction().begin();
115117
em.find( Entity1.class, 1 );
116118
em.getTransaction().commit();
117119
em.close();
118120

119-
assertEquals( 2, callsToConverter );
121+
assertTrue( previousCallCount < callsToConverter );
120122

121123
em = emf.createEntityManager();
122124
em.getTransaction().begin();

hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/convert/SimpleConvertAnnotationTest.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66
*/
77
package org.hibernate.jpa.test.convert;
88

9+
import java.net.MalformedURLException;
10+
import java.net.URL;
11+
import java.util.Arrays;
12+
import java.util.HashMap;
13+
import java.util.List;
14+
import java.util.Map;
915
import javax.persistence.AttributeConverter;
1016
import javax.persistence.Convert;
1117
import javax.persistence.Converter;
@@ -14,13 +20,6 @@
1420
import javax.persistence.EntityManagerFactory;
1521
import javax.persistence.Id;
1622

17-
import java.net.MalformedURLException;
18-
import java.net.URL;
19-
import java.util.Arrays;
20-
import java.util.HashMap;
21-
import java.util.List;
22-
import java.util.Map;
23-
2423
import org.hibernate.cfg.AvailableSettings;
2524
import org.hibernate.engine.spi.SessionFactoryImplementor;
2625
import org.hibernate.jpa.boot.spi.Bootstrap;
@@ -29,12 +28,11 @@
2928
import org.hibernate.type.Type;
3029
import org.hibernate.type.descriptor.converter.AttributeConverterTypeAdapter;
3130

32-
import org.junit.Test;
33-
3431
import org.hibernate.testing.junit4.BaseUnitTestCase;
32+
import org.junit.Test;
3533

3634
import static org.hibernate.testing.junit4.ExtraAssertions.assertTyping;
37-
import static org.junit.Assert.assertEquals;
35+
import static org.junit.Assert.assertTrue;
3836

3937
/**
4038
* @author Steve Ebersole
@@ -68,7 +66,7 @@ public List<String> getManagedClassNames() {
6866
em.getTransaction().commit();
6967
em.close();
7068

71-
assertEquals( 1, callsToConverter );
69+
assertTrue( 0 < callsToConverter );
7270

7371
em = emf.createEntityManager();
7472
em.getTransaction().begin();

hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/convert/SimpleConvertsAnnotationTest.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66
*/
77
package org.hibernate.jpa.test.convert;
88

9+
import java.net.MalformedURLException;
10+
import java.net.URL;
11+
import java.util.Arrays;
12+
import java.util.HashMap;
13+
import java.util.List;
14+
import java.util.Map;
915
import javax.persistence.AttributeConverter;
1016
import javax.persistence.Convert;
1117
import javax.persistence.Converter;
@@ -14,12 +20,6 @@
1420
import javax.persistence.EntityManager;
1521
import javax.persistence.EntityManagerFactory;
1622
import javax.persistence.Id;
17-
import java.net.MalformedURLException;
18-
import java.net.URL;
19-
import java.util.Arrays;
20-
import java.util.HashMap;
21-
import java.util.List;
22-
import java.util.Map;
2323

2424
import org.hibernate.cfg.AvailableSettings;
2525
import org.hibernate.engine.spi.SessionFactoryImplementor;
@@ -29,12 +29,11 @@
2929
import org.hibernate.type.Type;
3030
import org.hibernate.type.descriptor.converter.AttributeConverterTypeAdapter;
3131

32-
import org.junit.Test;
33-
3432
import org.hibernate.testing.junit4.BaseUnitTestCase;
33+
import org.junit.Test;
3534

3635
import static org.hibernate.testing.junit4.ExtraAssertions.assertTyping;
37-
import static org.junit.Assert.assertEquals;
36+
import static org.junit.Assert.assertTrue;
3837

3938
/**
4039
* @author Steve Ebersole
@@ -68,7 +67,7 @@ public List<String> getManagedClassNames() {
6867
em.getTransaction().commit();
6968
em.close();
7069

71-
assertEquals( 1, callsToConverter );
70+
assertTrue( 0 < callsToConverter );
7271

7372
em = emf.createEntityManager();
7473
em.getTransaction().begin();

hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/convert/XmlWithExplicitConvertAnnotationsTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import org.junit.Test;
3434

3535
import static org.hibernate.testing.junit4.ExtraAssertions.assertTyping;
36-
import static org.junit.Assert.assertEquals;
36+
import static org.junit.Assert.assertTrue;
3737

3838
/**
3939
* Jira HHH-8812 claims that explicit {@link javax.persistence.Convert} annotations are not processed when a orm.xml
@@ -111,22 +111,25 @@ public List<String> getMappingFileNames() {
111111
final AttributeConverterTypeAdapter type = assertTyping( AttributeConverterTypeAdapter.class, theDatePropertyType );
112112
assertTyping( LongToDateConverter.class, type.getAttributeConverter() );
113113

114+
int previousCallCount = 0;
115+
114116
try {
115117
EntityManager em = emf.createEntityManager();
116118
em.getTransaction().begin();
117119
em.persist( new Entity1( 1, "1", new Date() ) );
118120
em.getTransaction().commit();
119121
em.close();
120122

121-
assertEquals( 1, callsToConverter );
123+
assertTrue( previousCallCount < callsToConverter );
124+
previousCallCount = callsToConverter;
122125

123126
em = emf.createEntityManager();
124127
em.getTransaction().begin();
125128
em.find( Entity1.class, 1 );
126129
em.getTransaction().commit();
127130
em.close();
128131

129-
assertEquals( 2, callsToConverter );
132+
assertTrue( previousCallCount < callsToConverter );
130133

131134
em = emf.createEntityManager();
132135
em.getTransaction().begin();

0 commit comments

Comments
 (0)