0

Reading the migration path from Hibernate version 6.0, they disallowed the multiple column possibility, as stated in https://github.com/hibernate/hibernate-orm/blob/6.0/migration-guide.adoc#hbm-xml-multiple-column-now-disallowed

The issue I have (opened a ticket in https://hibernate.atlassian.net/browse/HHH-16232) is that I used this in Hibernate 5 to map an entity on 2 columns.

  • eventBody: contains the serialized representation of the event

  • typeName: contains the type name for the serializer to work

    public class StoredEvent {
        private DomainEvent event; // its an interface
        private long eventId;
        private Instant occurredOn;
        private String typeName;
    }
    

The mapping was working well in Hibernate 5 and I used a CompositeUserType to make this work (https://github.com/itsmoonrack/hibernate-test-case-templates/blob/main/orm/hibernate-orm-5/src/main/java/port/adapter/persistence/hibernate/DomainEventUserType.java):

<hibernate-mapping default-access="field" default-cascade="all">
<class name="event.StoredEvent" table="stored_event" lazy="true">
    <id name="eventId" type="long" column="event_id" unsaved-value="-1">
        <generator class="identity" />
    </id>
    <property name="event" type="port.adapter.persistence.hibernate.DomainEventUserType">
        <column name="event_body"/>
        <column name="type_name"/>
    </property>
    <property name="typeName" column="type_name" insert="false" update="false"/>
    <property name="occurredOn" column="occurred_on"/>
</class>
</hibernate-mapping>

I tried to migrate this to a new formal component but without succeeding, in my repository there is 3 use cases:

  • hibernate-orm-5/ORMUnitTestCase which does work as expected
  • hibernate-orm-6/ORMUnitTestCase which yield Could not locate field name [eventBody] on class [domain.model.DomainEvent]
  • hibernate-orm-6/ORMUnitTestCaseThatMayWork with the component approach but yields Could not determine recommended JdbcType for domain.model.DomainEvent

There is a full working reproducible case at: https://github.com/itsmoonrack/hibernate-test-case-templates/tree/main/orm

I have no idea how to migrate this and Hibernate team provide no sample of it. I am currently stuck and I even don't know if its a bug, or a feature request. I am looking for support and eventually will submit to the team the missing documentation to help people who encounter this case to have a migration path.

Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
Sylvain Lecoy
  • 947
  • 6
  • 15
  • Your implementation looks ok to me from a quick look. I guess it's a bug, but I didn't dig too deep into it. Thanks for the issue report, we will look into the matter as soon as we can. – Christian Beikov Mar 01 '23 at 09:25

0 Answers0