İki tablo Task
ve Company
olduğunu varsayalım. Company
, id
ve name
numaralı sütunlara sahiptir. Task
, Company
için customerId
ve providerId
iki sütununa ve id
sütununa bağlanır.Aynı tabloda birden çok kez aynı Querydsl birleştirin
yüzden customerId
ve providerId
tarafından belirtilen her bir şirket için name
nasıl alabilirim iki kez Company
masaya katılabilirim Querydsl kullanarak? üretir
Configuration configuration = new Configuration(templates);
JPASQLQuery query = new JPASQLQuery(this.entityManager, configuration);
QTask task = QTask.task;
QCompany customer = QCompany.company;
QCompany provider = QCompany.company;
JPASQLQuery sql = query.from(task).join(customer).on(customer.id.eq(task.customerId))
.join(provider).on(provider.id.eq(task.providerId));
return sql.list(task.id, customer.name.as("customerName"), provider.name.as("providerName"));
SQL:
select task.id, company.name as customerName, company.name as providerName from task join company on company.id = task.customerId
Ve bunun olmasını çok isterdim:
select task.id, customer.name as customerName, provider.name as providerName from task join company as customer on customer.id = task.customerId join company as provider on provider.id = task.providerId
Kod belki, bu çalıştığım şey daha iyi açıklıyor Katıldığım masanın nasıl takılacağını anlayamadım, böylece müşteri ve sağlayıcı isimleri arasında ayrım yapabilirdim. new QCompany("company as provider")
yapmayı denedim ama işe yaramadı. Bunu nasıl yapabileceğini bilen var mı?
Teşekkür Timo'yu yardımcı olmuyor
Yeniden Atama varsayılan değişken
QCompany.company
aşağıdaki do değişkenlere gerek, ama bu bir tablo "müşteri" ve tablo ile bir sorgu oluşturursa "sağlayıcı". Bu tablolar mevcut değil. Bu sadece şirket adında bir masa. Eğer "müşteri olarak şirket" ve "iş sağlayıcı olarak şirket" yaparsa, bu harika çalışırdı. – JoshQCompany, bir APT tabanlı oluşturulan sınıfsa, sorgulamayacaksanız, bu durum için JPAQuery kullanmanız gerekir. JPASQLQuery, bu yaklaşım kullanılarak oluşturulan Q-tipleri ile SQL sorguları içindir. Http://www.querydsl.com/static/querydsl/3.6.1/reference/html/ch02s03.html#d0e668 –
Bummer, bu berbat. Bu kasıtlı bir şey mi yoksa bilet açabileceğim bir şey mi? – Josh