2016-11-24 4 views
0

Ich bin eine Abfrage in QueryDSL erstellen. Ich habe Entity und Sub-Class-Entity mit derselben Spalte. Ich möchte dieselbe Abfrage für beide Entitäten verwenden, die nur einzelne JPAQuery verwenden.QueryDSL eine Abfrage mit Unterklasse erstellen

Hier ist meine Entität.

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

Antwort

0

Mein Code. diese Probe. wenn Sie eine einzelne Abfrage verwenden möchten. Verwenden Sie ein einfaches Repository. Es ist leicht zu finden, zu löschen, zu speichern. Sie suchen JPA-Tutorial.

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