Skip to content

Commit 4fece02

Browse files
committed
Minor tweak to #111 fix; still not 100% convinced Hibernate 5.0-5.1 vs 5.2+ incompatibility problems solved but closer
1 parent fc6f48a commit 4fece02

File tree

2 files changed

+14
-33
lines changed

2 files changed

+14
-33
lines changed

hibernate5/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Hibernate (http://hibernate.org) version 5.x data types.
1717
<packageVersion.dir>com/fasterxml/jackson/datatype/hibernate5</packageVersion.dir>
1818
<packageVersion.package>${project.groupId}.hibernate5</packageVersion.package>
1919
<!-- Hibernate with JPA 2.0 -->
20-
<hibernate.version>5.1.0.Final</hibernate.version>
20+
<hibernate.version>5.2.17.Final</hibernate.version>
2121
<surefire.version>2.12</surefire.version>
2222
<osgi.export>${project.groupId}.hibernate5</osgi.export>
2323
</properties>

hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/PersistentCollectionSerializer.java

+13-32
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,19 @@
11
package com.fasterxml.jackson.datatype.hibernate5;
22

3-
import javax.persistence.ElementCollection;
4-
import javax.persistence.EntityManager;
5-
import javax.persistence.FetchType;
6-
import javax.persistence.ManyToMany;
7-
import javax.persistence.ManyToOne;
8-
import javax.persistence.OneToMany;
9-
import javax.persistence.OneToOne;
3+
import javax.persistence.*;
104
import java.io.IOException;
11-
import java.util.ArrayList;
12-
import java.util.Collection;
13-
import java.util.HashMap;
14-
import java.util.HashSet;
15-
import java.util.List;
16-
import java.util.Map;
17-
import java.util.Set;
5+
import java.util.*;
186

197
import com.fasterxml.jackson.core.JsonGenerator;
20-
import com.fasterxml.jackson.databind.BeanProperty;
21-
import com.fasterxml.jackson.databind.JavaType;
22-
import com.fasterxml.jackson.databind.JsonMappingException;
23-
import com.fasterxml.jackson.databind.JsonSerializer;
24-
import com.fasterxml.jackson.databind.SerializerProvider;
8+
import com.fasterxml.jackson.databind.*;
259
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
2610
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
2711
import com.fasterxml.jackson.databind.ser.ContainerSerializer;
2812
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
2913
import com.fasterxml.jackson.databind.ser.ResolvableSerializer;
3014
import com.fasterxml.jackson.databind.util.NameTransformer;
3115
import com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module.Feature;
16+
3217
import org.hibernate.FlushMode;
3318
import org.hibernate.Hibernate;
3419
import org.hibernate.Session;
@@ -38,7 +23,6 @@
3823
import org.hibernate.engine.spi.SessionFactoryImplementor;
3924
import org.hibernate.engine.spi.SessionImplementor;
4025
import org.hibernate.mapping.Bag;
41-
import org.hibernate.resource.transaction.TransactionCoordinator;
4226
import org.hibernate.resource.transaction.backend.jta.internal.JtaTransactionCoordinatorImpl;
4327

4428
/**
@@ -421,26 +405,23 @@ protected static class SessionReader
421405
{
422406
public static boolean isJTA(Session session)
423407
{
424-
if (session instanceof EntityManager)
425-
{
426-
try
427-
{
408+
if (session instanceof EntityManager) {
409+
try {
428410
session.getTransaction();
429411
return false;
430-
}
431-
catch (final IllegalStateException e)
432-
{
412+
} catch (final IllegalStateException e) {
433413
// EntityManager is required to throw an IllegalStateException if it's JTA-managed
434414
return true;
435415
}
436416
}
437-
else if (session instanceof SessionImplementor)
438-
{
439-
final TransactionCoordinator transactionCoordinator = ((SessionImplementor) session).getTransactionCoordinator();
440-
417+
if (session instanceof SessionImplementor) {
418+
// 23-Aug-2018, tatu: Unfortunately, Hibernate ORM has a pretty severe backwards-compatibility
419+
// breakage between 5.1 and 5.2, due to move of `TransactionCoordinator` being moved to
420+
// different package. As such, we can not cast it... and it's unclear if even calling the
421+
// method directly is kosher.
422+
final Object transactionCoordinator = ((SessionImplementor) session).getTransactionCoordinator();
441423
return (transactionCoordinator instanceof JtaTransactionCoordinatorImpl);
442424
}
443-
444425
// If in doubt, do without (transaction)
445426
return true;
446427
}

0 commit comments

Comments
 (0)