Как выполнять поиск по атрибуту подкласса с помощью JPA CriteriaQuery?

Я пытаюсь написать запрос для поиска атрибута подкласса, который не находится в его суперклассе, и вернуть все объекты суперкласса. В настоящее время я получаю исключение NullPointerException, когда пытаюсь сделать person.get("specialAttribute").

@Inheritance(strategy = InheritanceType.JOINED)
@Entity
public abstract class Person {
    public String searchableAttribute;
}

@Entity
@Table( name = "normal_person" )
public class NormalPerson extends Person {

}

@Entity
@Table( name = "special_person" )
public class SpecialPerson extends Person {
    @Column(nullable = false, unique = true)
    public String specialAttribute;
}

// Controller method

    Root<Person> person = query.from(Person.class);
    query.where(
            builder.or(
                    builder.like(person.<String>get("specialAttribute"), "foo"),
                    builder.like(person.<String>get("searchableAttribute"), "foo")
            )
    );
5
задан Ransom Briggs 26 March 2012 в 16:27
поделиться