Problem mit n:m Beziehung
Posted: Mon Nov 14, 2011 7:20 pm
Hallo,
ich versuche mich gerade an Master/Detail Beziehungen. Bei 1:n hatte ich bis jetzt kein Problem und das hat auch sehr nett funktioniert mit JVx. Jetzt geht es aber um eine n:m Relation wobei ein und die selbe Tabelle untereinander verknüpft wird.
Die Tabelle customer wird über eine Zwischentabelle mit sich selbst verknüpft. customer <---> customer.
Im Code habe ich dann ein MemDataBook, welches genau einen Customer beinhält. Das soll jetzt über customer2beneficiary mit einer Liste an Customern verbunden werden. Der folgende Code funktioniert prinzipiell, allerdings wird mir immer nur ein richtig verknüpfter Datensatz angezeigt. Liegt das daran, dass das MemDataBook nur einen Customer hat? Aber dieser Customer kann mehrere "Begünstigte" andere Customer haben, somit müssten mir doch diese alle angezeigt werden. Ich wüsste auch nicht, dass da ein Limit dabei ist?
ich versuche mich gerade an Master/Detail Beziehungen. Bei 1:n hatte ich bis jetzt kein Problem und das hat auch sehr nett funktioniert mit JVx. Jetzt geht es aber um eine n:m Relation wobei ein und die selbe Tabelle untereinander verknüpft wird.
Die Tabelle customer wird über eine Zwischentabelle mit sich selbst verknüpft. customer <---> customer.
Im Code habe ich dann ein MemDataBook, welches genau einen Customer beinhält. Das soll jetzt über customer2beneficiary mit einer Liste an Customern verbunden werden. Der folgende Code funktioniert prinzipiell, allerdings wird mir immer nur ein richtig verknüpfter Datensatz angezeigt. Liegt das daran, dass das MemDataBook nur einen Customer hat? Aber dieser Customer kann mehrere "Begünstigte" andere Customer haben, somit müssten mir doch diese alle angezeigt werden. Ich wüsste auch nicht, dass da ein Limit dabei ist?
- Code: Select all
IChangeableDataRow tmpRow = mdbCustomerData.getDataRow(0);
mdbCustomerData = new MemDataBook();
mdbCustomerData.setRowDefinition(tmpRow.getRowDefinition());
mdbCustomerData.setName("__test_");
//mdbCustomerData.setMasterReference(new ReferenceDefinition(new String[] { "ID" }, rdbCustomerToBeneficiary, new String[] { "CUSTOMER_ID" }));
mdbCustomerData.open();
mdbCustomerData.insert(false);
mdbCustomerData.setValues(null, tmpRow.getValues(null));
////////
// Master DataBook muss zuerst geöffnet sein
rdbCustomerToBeneficiary.setDataSource(dataSource);
rdbCustomerToBeneficiary.setName("customerToBeneficiary");
rdbCustomerToBeneficiary.setMasterReference(new ReferenceDefinition(new String[] { "CUSTOMER_ID" }, mdbCustomerData, new String[] { "ID" }));
rdbCustomerToBeneficiary.open();
/////////////////
rdbCustomerData.setDataSource(dataSource);
rdbCustomerData.setName("customerData");
rdbCustomerData.setMasterReference(new ReferenceDefinition(new String[] { "ID" }, rdbCustomerToBeneficiary, new String[] { "BENEFICIARY_ID" }));
rdbCustomerData.open();