Simple master-detail example has been edited by Oleg Taranenko (Aug 30, 2007).

(View changes)

Content:

Simple master-detail example.

Working on my wicket/databinder/hibernate application I've run into a problem, how I can show master detail relation entities, are extracted from the database? No doubt, there are tens ways, how to do this, but I wanted to exploit mature and conviniet Hibernate's lazy loading facility and avoid an odd code cluttering.

Say there is an Order entity list with list of its Items is shown in a master table. Order Items Set is a member, declaried with Hibernate @OneToMany annotation, must be shown on neighbour table.

Entity Code
@Entity
public class Order {
@Id Integer orderId;
@Column Integer number;
...
@OneToMany
Set<OrderItem> items;
...
}

@Entity
public class OrderItem {
@Id Integer itemId;
@Column String itemName;
...
}
Markup code
HomePage.html

<html>
    <body>
               
       <table cellspacing="0" cellpadding="2" border="1">
               <tr wicket:id="orders">
                       <td><span wicket:id="orderId">[order id]</span></td>
                       <td><a wicket:id="alink"><span wicket:id="number">[order number]</span></a></td>
               </tr>
       </table>

       <div wicket:id="itemsWrap"></div>
    </body>
</html>


                       HomePage$ItemsPanel.html

<wicket:panel>
       <table cellspacing="0" cellpadding="2" border="1">
               <tr wicket:id="items">
                       <td><span wicket:id="itemId">[id]</span></td>
                       <td><span wicket:id="itemName">[name]</span></td>
               </tr>
       </table>
</wicket:panel>

Clicking on the link 'order number', left panel should be refreshed with the associated list of the order's item list. Of course it is a good idea to use an ajax-based refresh and Wicket good deal with such cases.


To be ended later...

Reply via email to