Hello! If you are using two rows as @AffinityKeyMapped, you can join other tables which use same two rows, BUT you can't join tables which use only first row as @AffinityKeyMapped or only second row.
That's why you can join invoice_line to fact_purhcase_line - I guess they both have invoiceId and factLineId and annotation on both. Regards, -- Ilya Kasnacheev чт, 28 февр. 2019 г. в 22:38, xmw45688 <xw...@procurant.com>: > Can some one comments on the following questions in my previous post? > > > 4. fact_purhcase_line, invoice and invoice line via factLineId and > InvoiceID > do not work, please see annotation below > > public class InvoiceLineKey { > /** Primary key. */ > private long id; > > /** Foreign key to fact_purhcase_line */ > @AffinityKeyMapped > private long factLineId; > > /** Foreign key to invoice */ > @AffinityKeyMapped > private long invoiceId; > > > 5. I don't quite understand that invoiceId affinity key mapped between > invoice and invoice_line does not require factLineId key mapped between > fact_purchase_line and invoice_line. Is this because of having factId key > affinity between purchase_fact and purchase_fact_line, between > purchase_fact > and invoice. > > So I just have the following key affinity mapped - > > purchase_fact -> factId-> purchase_fact_line > purchase_fact -> factId -> invoice > invoice -> invoiceId -> invoice_line > > Interestingly, invoice_line join fact_purhcase_line works fine (see > queries > below). Can someone please shed some lights on this? > > // expected > SELECT count(*) from PARTITION.invoice inv, PARTITION.invoiceline il > WHERE inv.id = il.invoiceid; > > // why does this query work? note there is a join between > li.id=il.factLineId which is not a key affinity mapped. > SELECT count(*) > from PARTITION.factpurchaseline li, PARTITION.invoice inv, > PARTITION.invoiceline il > WHERE li.id = il.factlineid > AND inv.id = il.invoiceid > ; > > // why does this query work? note there is a join between > li.id=il.factLineId which is not a key affinity mapped. > SELECT count(*) from PARTITION.factpurchaseline li, PARTITION.invoiceline > il > WHERE li.id = il.factlineid > ; > > > > > > > -- > Sent from: http://apache-ignite-users.70518.x6.nabble.com/ >