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 look EXACTLY THE SAME and when i try to select one of them, only the last one can be selected, the other 3 can't as if they were not there.
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?
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 look EXACTLY THE SAME and when i try to select one of them, only the last one can be selected, the other 3 can't as if they were not there.
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?