# Stack overflow error with Bidirectional mappings while migrating to 6.x

**URL:** <https://discourse.hibernate.org/t/stack-overflow-error-with-bidirectional-mappings-while-migrating-to-6-x/11612>\
**Category:** Hibernate ORM\
**Created:** [July 2, 2025, 7:09pm UTC](https://discourse.hibernate.org/t/stack-overflow-error-with-bidirectional-mappings-while-migrating-to-6-x/11612 "2025-07-02T19:09:25Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Suryansh\_Jain](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/suryansh_jain/32/4067_2.png) [@Suryansh\_Jain](https://discourse.hibernate.org/u/Suryansh_Jain)\
**Post date:** [July 2, 2025, 7:09pm UTC](https://discourse.hibernate.org/t/stack-overflow-error-with-bidirectional-mappings-while-migrating-to-6-x/11612/1 "2025-07-02T19:09:26Z")

</div>

I’m currently in the process of migrating a Spring Boot application from **Hibernate 5.x** to **Hibernate 6.x** , and I’m getting a stack overflow error with **bidirectional entity mappings** that were previously working fine.

```auto
@Entity
public class Sponsor {
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid2")
    @Type(type = "pg-uuid")
    @Column(name = Properties.UUID, unique = true, nullable = false)
    protected UUID uuid;

  /**
     * If the sponsor is the official sponsor for an event, then this field will point
     * to the event. Otherwise, only the sponsor's relatedEvents will be set.
     */
    @OneToOne(mappedBy = Event.Properties.SPONSOR, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private Event officialEvent; 
    
     /**
     * This points to the related event. However, an event could have multiple sponsors all
     * claiming to represent the event. The official sponsor will have both the event field
     * as well as the relatedEvent field set.
     */
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "event_uuid")
    private Event relatedEvent;
    
    // other fields, getters, setters
}

```

```auto
@Entity
public class Event {
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid2")
    @Type(type = "pg-uuid")
    @Column(name = Properties.UUID, unique = true, nullable = false)
    protected UUID uuid;

    /**
     * This points to the official sponsor. However, MULTIPLE sponsors can sometimes
     * claim to represent the event. The relatedSponsors field below links to all related
     * sponsors not just the official sponsor represented here.
     */
    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name = "sponsor_uuid")
    private Sponsor sponsor;

    /**
     * This points to ALL sponsor claiming a sponsorship with the event.
     */
    @OneToMany(mappedBy = "relatedEvent", targetEntity = Sponsor.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<Sponsor> relatedSponsors = new ArrayList<Sponsor>();

```

Error:

```auto
java.lang.StackOverflowError: null
	at org.hibernate.sql.results.graph.entity.EntityResultGraphNode.getReferencedMappingContainer(EntityResultGraphNode.java:42)
	at org.hibernate.sql.results.graph.entity.internal.EntityFetchSelectImpl.lambda$createAssembler$0(EntityFetchSelectImpl.java:73)
	at org.hibernate.sql.results.internal.ResultsHelper$1.resolveInitializer(ResultsHelper.java:118)
	at org.hibernate.sql.results.graph.entity.internal.EntityFetchSelectImpl.createAssembler(EntityFetchSelectImpl.java:67)
	at org.hibernate.sql.results.graph.entity.AbstractEntityInitializer.<init>(AbstractEntityInitializer.java:176)
	at org.hibernate.sql.results.graph.entity.internal.EntityResultInitializer.<init>(EntityResultInitializer.java:35)
	at org.hibernate.sql.results.graph.entity.internal.EntityResultImpl.lambda$createResultAssembler$0(EntityResultImpl.java:91)
	at org.hibernate.sql.results.internal.ResultsHelper$1.resolveInitializer(ResultsHelper.java:118)
	at org.hibernate.sql.results.graph.entity.internal.EntityResultImpl.createResultAssembler(EntityResultImpl.java:82)
	at org.hibernate.sql.results.jdbc.internal.StandardJdbcValuesMapping.resolveAssemblers(StandardJdbcValuesMapping.java:53)
	at org.hibernate.sql.results.internal.ResultsHelper.createRowReader(ResultsHelper.java:77)
	at org.hibernate.sql.results.internal.ResultsHelper.createRowReader(ResultsHelper.java:62)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:188)
	at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:83)
	at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:76)
	at org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:65)
	at org.hibernate.loader.ast.internal.SingleIdLoadPlan.load(SingleIdLoadPlan.java:145)
	at org.hibernate.loader.ast.internal.SingleIdLoadPlan.load(SingleIdLoadPlan.java:117)
	at org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.load(SingleIdEntityLoaderStandardImpl.java:75)
	at org.hibernate.persister.entity.AbstractEntityPersister.doLoad(AbstractEntityPersister.java:3748)
	at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3737)
	at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:604)
	at org.hibernate.event.internal.DefaultLoadEventListener.loadFromCacheOrDatasource(DefaultLoadEventListener.java:590)
	at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:560)
	at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:544)
	at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:207)
	at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:106)
	at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:68)
	at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:138)
	at org.hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1222)
	at org.hibernate.internal.SessionImpl.immediateLoad(SessionImpl.java:1041)
....

```

---

<div class="post-metadata">

**Author:** ![beikov](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/beikov/32/258_2.png) [@beikov](https://discourse.hibernate.org/u/beikov)\
**Post date:** [July 3, 2025, 7:31am UTC](https://discourse.hibernate.org/t/stack-overflow-error-with-bidirectional-mappings-while-migrating-to-6-x/11612/2 "2025-07-03T07:31:31Z")

</div>

Looks like you’re hitting a bug. Please try to create a reproducer with our [test case template](https://github.com/hibernate/hibernate-test-case-templates/blob/master/orm/hibernate-orm-6/src/test/java/org/hibernate/bugs/JPAUnitTestCase.java) and if you are able to reproduce the issue, create a bug ticket in our [issue tracker](https://hibernate.atlassian.net) and attach that reproducer.
