I found one missing call. And fixed it. Your test situation "works". However realize that you have an inconsistency. You seem to want JPA's implicit naming support ("_id" appended to the join column name). However the JPA spec would instead say that the referenced column name should be used. In your case that would be "_c_id", not "_id" because your PK was physically named as "c_id".
So, using your PhysicalNamingStrategy with the standard ImplicitNamingStrategy you'd get "c_fallback".
Using your PhysicalNamingStrategy with the JPA-compliant ImplicitNamingStrategy you'd get "c_fallback_c_id"
|