This is something that the community has tried to tackle almost since the inception of Qi4j. The QRM extension was an attempt to create a generic Qi4j-Relational-Mapping, but the rabbit hole quickly becomes a very deep, slippery slope proposition for the generic case. So instead of ending up with something like Hibernate's mess, we decided to stop pretending it was a reasonable thing to do.
Instead, we provided APIs and SPIs into the guts of Qi4j, so that it would be possible to do this on a case-by-case basis, which is easier as many edge cases can be ignored or handled specifically for the project itself.
As for JPA --> If I remember correctly, it depends on naming conventions of methods, a.k.a. getters/setters, and Hibernate's meta data level isn't much easier than working directly with reasonable JDBC abstraction layer such as MyBatis (QRM tried to use this) or Cayenne.
Now that said, before giving you the full answer of what to recommend, you need to provide us with "Why do you need this?". Is it because you rely on using the DB as an integration point between different applications (Not a good idea, but...) ? Is it for reporting? Is it because those tables already exists, if so why can't they be migrated? Why are you willing to sacrifice a lot of simplicity and performance, to maintain the Relation model?
Also, please consider to do a Proof-Of-Concept of your application before trying to tackle the "Map to SQL" problem. Qi4j goes to great lengths to ensure that no persistence implementation details leaks from the SPI to the application, and you should be able to swap in your own "SQL EntityStore" implementation at a later stage, or come to the conclusion that the requirement isn't really that important...
Looking forward to your requirements.
Niclas