Saturday, February 11, 2012

Many-to-Many Relationship Insert in ADF BC and ADF Faces UI

My last post was about how to implement Many-to-Many relationship in ADF BC and ADF UI - Many-to-Many Relationship Implementation in ADF BC and ADF Faces UI. I will continue the same topic and describe today how to implement Insert operation for Many-to-Many relationship.

Download developed sample application - ManyToManyADFBC_v2.zip. This sample is update for previous blog post application. It contains code to insert new records into Many-to-Many relationship.

There is Java method in Application Module implementation class, it inserts mapping row into relationship table (BlogsReaders) and commits transaction - this method is called from ViewController, after user submits new row for insert. Readers and Blogs VO's are refreshed after insert - to bring new mapping back to the UI:


I have defined two additional VO instances in Application Module for both ends (Blogs and Readers). This is required for better UI experience - while inserting new record, current records will stay in tact:


Managed Bean from ViewController contains two listeners - one to insert blank row and prepare data entry form, another is triggered when users confirms new record - it retrieves required ID mapping and calls method from Application Module to populate mapping table and complete transaction. This example is for Readers end, same is applied for Blogs end:


ADF binding view - 4 iterators to represent Many-to-Many relationship and 2 iterators for data entry:


On runtime it works like that - user adds new reader, data entry popup opens. New  reader entry is automatically associated with currently selected blog:


New reader - Sheldon is inserted, right side with related blog can be synched for new record:


In the same way, we can insert new blog:


Now user is reading two blogs:


If you will change a reader on the right side to Julia, blog list will be updated. However, if you would like to synch all readers from selected blog - click on blog row or press Synch button:


Readers list is in synch:

4 comments:

Vinay Agarwal said...

Hi, would you like taking a look at my post on the same lines?
http://oracleadfhowto.blogspot.com/2012/02/many-to-many-association-using-multi.html

Andrejus Baranovskis said...

Hi,

Nice, it seems a bit different approach - you are using checkbox.

In my next posts I will post delete and edit - quite easy.

Andrejus

Nishant said...

Hi Andrejus,

Have you posted the delete and edit tutorials? Couldn't find them.

Suman said...

Hi Andrejus,

I have the same requirement. But the primary key will be coming from DBSequence (These keys will be generated at the database level after commit). How can we handle this case ? Can you help me with this ?