Ну я так понимаю, чтобы воспользоваться DQL , связь таблиц должна быть определена в аннотациях.
Если использовать в DQL join между Product и I18nString через I18nEntity, которая замаплена на таблицу i18n_entity, то как прописать связь на первичного ключа i18n_entity.id хотя бы в одну сторону на поле i18n_string.entity_id, а если не использовать i18nEntity, то каким образом можно сделать с одного поля i18n_string.entity_id два или более внешних ключа на разные таблицы, так не базе не сделаешь, да и в принципе это как то не верно ?
то есть правильно должно быть так
SELECT p.*, i18s.text
FROM product as p
INNER JOIN i18n_entity AS i18e ON i18e.id = p.i18n_entity_id
INNER JOIN i18n_String AS i18s ON i18s.i18n_entity_id = i18e.id AND i18s.language_id = :language_id
WHERE i18s.text = :name
В DQL это будет что то типа
select p, i18s
FROM \Application\Entity\Product p
JOIN p.i18nEntity i18n
JOIN i18n.id i18s
JOIN i18s.language l
WHERE l.id = :language AND i18s.text = :name
но тогда у меня отсутствует связь
JOIN i18n.id i18s