1 Reply Latest reply on Oct 17, 2006 11:22 AM by leotemp

    Using an Object as the identity property for a destination

    dimival Level 1
      I am using the DataServices and Java Assemblers in my application but there seems to be a problem with one of my Java POJOs. First let me explain about my application, the java-side is using Hibernate, so my POJOs are mapped to a database's entities. I know there is a Hibernate Assembler but i can't use it because besides Hibernate I am using EJB and Spring on the java-side, so that's why i am using the Java Assembler instead of the Hibernate one.
      Ok so now moving along, there's a POJO that has a composite ID, in Hibernate in order to do this you need an Object which will be the composite ID. Here's the example:

      Class GroupRole {
      public GroupRoleID id;
      }
      Class GroupRoleID {
      public Integer rolId;
      public Integer groupId;
      }

      On Flex i did the same:

      Class GroupRole {
      public var id : GroupRoleID;
      }

      Class GroupRoleID {
      public var rolId : Number;
      public var groupId : Number;
      }

      Now on my data-management.xml i have the folowing destination:
      <destination id="groupsRoles">
      <adapter ref="java-dao" />
      <properties>
      <source>com.intercam.seguridad.assembler.GrupoRolesAssembler</source>
      <scope>application</scope>
      <metadata>
      <identity property="id " type="GroupRoleID"/>
      </metadata>
      <use-transactions>false</use-transactions>
      <auto-sync-enabled>true</auto-sync-enabled>
      </properties>
      </destination>

      Now when i call the fill method on the assembler to get a list of GroupRole objects, something weird happens on the Datagrid, it shows the registers but only one of them can be selected, for example, if the fill returns 4 registers the DataGrid shows 4 registers that are EXACTLY THE SAME and when i try to select one of them, only the last one can be selected, the other 3 can't. Weirder is the fact that they appear to be the same, same data and all, but actually on the DataBase they are different.

      So what's wrong with this? Like i said it happens when you declare an object as the identify property in the destination. I am assuming that this is not supported and if it is does anyone know how do make it work? What is needed in order to work with objects which identity property is an object?