簡體   English   中英

QueryDSL使用子類構建查詢

[英]QueryDSL build a query with subclass

我在QueryDSL中建立查詢。 我有實體和子類實體具有相同的列。 我想僅使用單個JPAQuery對兩個實體使用相同的查詢。

這是我的實體。

@Entity
public class Region {

  @Id
  private Integer id;

}

@Entity
public class RegionTemp extends Region {}

查詢者

@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();
    }
}

我的代碼。 這個樣本。 如果要使用單個查詢。 使用簡單的存儲庫。 輕松查找,刪除,保存。 您搜索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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM