Saturday, February 21, 2009

Workaround for LOV on Primary Key Attribute

There is a problem with LOV component, when it is defined on Primary Key attribute - registered Bug #8275169. Until problem will be fixed, workaround can be as following - to define second dummy transient attribute for Primary Key attribute and use it on the page. However, during commit - in doDML method on Entity to substitute real attribute value with value from transient attribute.

For example, Entity with Primary Key attribute DepartmentId:

I have defined LOV for this attribute in VO and on runtime trying to use LOV:

However unsuccessfully, error is generated:

You can download sample application -, where described workaround is implemented.

To give you more light about workaround, I will explain it in detail.

First, Primary Key attributes always are with Mandatory validation rule, however I removed this rule from DepartmentID and declared it for my transient attribute DepartmentId_Dummy. It is done in order to remove unnecessary check, since we are creating mirror attribute:

In getter method for transient attribute I need to return real attribute value during first load in order to display not blank values but correct ones:

In overridden doDML method value from transient attribute is copied back to real attribute:

DepartmentId attribute Display Hint is set to Hide - this means will not be visible in ViewController:

Transient attribute will be visible with user friendly label:

When developer will drag and drop Data Control on the page, wizard will not list original DepartmentId attribute, because it was set as Hide:

Now LOV will work, however I strongly believe this bug will be fixed in next build and there will be no need to apply this workaround !

Spanish Summary:

Este artículo se describe un Tip para solucionar un bug que se produce cuando se utiliza una Lista de Valores (LOV) para recuperar un dato en un formulario.


Anonymous said...

My LOV doesn't work. I used ViewObject, not ViewObjectLOV.
When I click row in LOV, error is occured.
Error text is: handleError
SEVERE: Server Exception during PPR, #1

Anonymous said...

I want to install Jdev Release 1 Patch Set 1 (
Is this bug fixed in this release?