Infinispan Remote support all JoinTable association type use cases

Description

Currently Infinispan remote dialect is not capable of implement a join table strategy to map associations to datastore caches.
Join table is used, speaking of Hibernate ORM 5.3.0.Final, also for OneToMany association if a @JoinColumn annotation is not defined on field and if the association is unidirectional. Futhermore join table strategy is used of course also to implement all ManyToMany associations.
If the dialect try to implement JoinTable an OGM001711 error message is risen, showing the text: "This domain model would cause table '%s' to be generated without a primary key. This is not supported on an Infinispan Remote dialect: check that your embedded collections have a proper ordering definition.".
In this issue we want to remove this limitation, allowing Infinispan Remote dialect to handle join column mapping on association, for all use cases that require this mapping.

Environment

None

Activity

Show:
Fabio Massimo Ercoli
May 31, 2018, 11:11 PM

In the current implementation of schema factory if the association definition, instance of TableDefinition, provided by Hibernate ORM, does not have a primary key Hibernate OGM Infinispan Remote dialect does not create the cache and a validation exception is risen.
But many JoinTable associations are mapped by Hibernate ORM with a TableDefinition without a primary key, so a lot of mapping are not currently supported by the dialect.

Trying to built the cache anyway, providing as key, the one composed with all fields declared in the association many tests now work, so I could remove many skip.

Currently I'm working on my branch: https://github.com/fax4ever/hibernate-ogm/tree/OGM-1485-join-table-ispn.
Before a PR I need to understand better what it happens in other cases, the ones where test cases could not yet skipped.

Fixed

Assignee

Fabio Massimo Ercoli

Reporter

Fabio Massimo Ercoli

Labels

None

Feedback Requested

None

Feedback Requested By

None

backPortable

None

Suitable for new contributors

None

backportDecision

None

backportReEvaluate

None

Components

Fix versions

Affects versions

Priority

Major