OneToOne relationship.

It is quite difficult to manage OneToOne relationship with Hibernate for 2 reasons:

  • By default, Hibernate POJO generation does not support OneToOne relationship.
  • Once you have added correct annotations to POJO in order to support OneToOne relationship, Eager loading of OnetoOne second member when quering on first member becomes a real problem.

To prevent, these drawbacks, Adichatz provides a POJO rewriter which rewrite POJO members so that OneToOne is effective and Lazy loading is conserved.

Composite key.

Consider that you have an object with a composite key as following:

  • Parent key
  • Increment

Adichatz proposes to manage directly the incrementation of this kind of key.

Dynamic blocks.

A dynamic block is composite containing field which must be created (Valid status) or not created (Invalid status) following a condition. When the condition changes the status of the block must change. If the block contains validations, they must be raised only when block has a Valid status: If an error occurs (e.g. a mandatory field is empty), and the condition of the block is no longer checked, the error must disappeared respectively if the condition is checked, the error must occur. An other difficulty is to link dynamic behavior with databinding service. If a change in another editor causes a change the condition value, the status of the block must change.

Adichatz provides a simple way to manage dynamic blocks.

<composite id="activeComposite">
    <layout layoutConstraints="wrap 1, ins 0, hidemode 3" columnConstraints="[fill, grow]"/>
    <pgroup text="#MSG(Film,active)" id="activeGroup">
	    <dynamicClause listenedFieldId="active" listenedContainerId="detailContainer">
    	    <conditionCode>#BEAN().getActive()</conditionCode>
    	    <postCode>#CONTROLLER(fieldComposite).getComposite().layout();
#CONTROLLER(detailContainer).reflow();</postCode>
	    </dynamicClause>
	    <layout layoutConstraints="wrap 2" columnConstraints="[align right]10[fill,grow]"/>
	    <formattedText editPattern="######" format="Short" property="rentalDuration" mandatory="true" id="rentalDuration"/>
	    <numericText pattern="##.##" property="rentalRate" mandatory="true" style="SWT.BORDER | SWT.RIGHT" id="rentalRate"/>
	    <numericText pattern="###.##" property="replacementCost" mandatory="true" style="SWT.BORDER | SWT.RIGHT" id="replacementCost"/>
    </pgroup>
</composite>