2014-01-14 1 views
7

Я абстрактный класс:запросов по типу весной данные JPA

@Entity 
@Inheritance(strategy = InheritanceType.JOINED) 
public abstract class A { 
    ... 
} 

и несколько простирающихся классы, как:

@Entity 
public class B extends A { 
    ... 
} 

У меня также есть третье лицо:

@Entity 
public class C { 

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
    private A objectA; 
    ... 
} 

И вопрос в том, как я могу построить Spring Data JPA finder в репозитории объектов C, чтобы запрашивать только объекты, расширяющие A с желаемым типом?

+0

Добавить свойство только для чтения для дискриминатора или попробовать 'Выб из образцов с, где TYPE (s) =: type' – MariuszS

+0

Возможный дубликат [Java/JPA | Запрос с указанным унаследованным типом] (http://stackoverflow.com/questions/4884249/java-jpa-query-with-specified-inherited-type) – MariuszS

+0

Первое, что я спросил о весенних данных, а второй II нужно запросить не для тип (c), но тип (c.objectA) –

ответ

7

Вы можете использовать имя значения дискриминатора, которые вы определили «тип»

@Entity 
@Inheritance(strategy = InheritanceType.JOINED) 
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING) 
@Table(name = "abc") 
public abstract class Abc { 
.... 

------------------------------------------- 

@Query("select a from Abc a where type = ?1") 
List<Abc> findByType(String typeValue); 

 Смежные вопросы

  • Нет связанных вопросов^_^