When using a abstract MappedSuperClass with a join table that must be reconfigured into children, the generated SQL request from Criteria API does not use the join table name described in the AssociationOverride annotation. With the given files, the following request :
CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<MyTable> criteriaQuery = cb.createQuery(MyTable.class);
Root<MyTable> myTable = criteriaQuery.from(MyTable.class);
ListJoin<MyTable, Dependency> md = myTable.join(AbstractTable_.dependencies);
Predicate condition = cb.equal(md.get(Dependency_.label), "one");
criteriaQuery.where(condition);
TypedQuery<MyTable> query = session.createQuery(criteriaQuery);
assertTrue(query.getResultList().size() != 0);
tries to request the table_dependency instead of dependency_table as described in the AssociationOverride |