Я столкнулся со странным несоответствием между поведением критериев и HQL-запросов.Упрощенная модель домена:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table("TITLES")
public abstract class ParentGroup {}
// no JPA annotations
public abstract class ParentTitle extends ParentGroup {}
@Entity
@DiscriminatorValue("SUB_CHILD")
public class SubTitle extends ParentTitle {}
Вот тест, демонстрирующий странное поведение:
@Test
public void testQueryByAbstractSuperClass() {
List<ParentTitle> list = session.createCriteria(ParentTitle.class).list();
assertEquals(1, list.size()); //passes
list = session.createQuery("from ParentTitle").list(); //exception thrown
assertEquals(1, list.size());
}
со следующим исключением:
org.hibernate.hql.ast.QuerySyntaxException: ParentTitle is not mapped [from ParentTitle]
Почему HQL-запросне работает?