2016-11-24 8 views
0

Я строю запрос в QueryDSL. У меня есть объект entity и sub class, имеющий одинаковый столбец. Я хочу использовать один и тот же запрос для обоих объектов, используя только один JPAQuery.QueryDSL построить запрос с подкласса

вот моя сущность.

@Entity 
public class Region { 

    @Id 
    private Integer id; 

} 

@Entity 
public class RegionTemp extends Region {} 

queryer

@Component 
public class RegionQueryer { 

    @PersistenceContext 
    private EntityManager mysqlEntityManager; 

    QRegion qRegion = QRegion.region; // ??? 

    public Integer loadLastId() { 

     return new JPAQueryFactory(mysqlEntityManager) 
       .select(qRegion.id) 
       .from(qRegion) 
       .orderBy(qRegion.id.desc()).fetchFirst(); 
    } 
} 

ответ

0

Мой код. этот образец. если вы хотите использовать один запрос. используйте простой репозиторий. он легко находит, удаляет, сохраняет. вы ищете учебник JPA.

@Override 
public List<CompanyInformaion> findCompanyInformationList(String language, Association association) { 
    QCompanyInformaion qCompanyInformaion = QCompanyInformaion.companyInformaion; 
    QCompany qCompany = QCompany.company; 

    EntityManager em = entityManagerFactory.createEntityManager(); 
    JPAQuery jpaQuery = new JPAQuery(em); 

    List<CompanyInformaion> infos = jpaQuery.from(qCompanyInformaion) 
      .where(qCompanyInformaion.language.eq(language) 
        .and(qCompanyInformaion.company.in(new JPASubQuery().from(qCompany) 
          .where(qCompany.association.eq(association)).list(qCompany)))) 
      .orderBy(qCompanyInformaion.companyName.asc()).list(qCompanyInformaion); 

    return infos; 
}