[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] How to force EclipseLink to use my own collection instead Java standards?
|
The mapping type is controlled by our ContainerPolicy. You should be able to
use a descriptor customizer to change the collection class of the
ContainerPolicy for your mapping.
http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_customizer.htm#CHDCCDGC
Note: For a LAZY mapping, we need to be able to use our own container
implementation, so changing the container type will cause problems.
On 30/03/2013 3:06 PM, Edson Richter wrote:
Em 30/03/2013 15:44, Edson Richter escreveu:
Hi!
I've created a collection class that implements Map<K, T>.
When I create the object for the first time, everything happens as expected,
but once I retrive the object from database (using either find or Query), I'm
getting a standard Map implementation instead my customized version.
How can I tell EclipseLink that it must use my specialized version of the
collection class?
Current declaration is:
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "anexo", joinColumns = @JoinColumn(name =
"cadastroprofissional_id"))
@MapKeyColumn(name = "tipo")
public Map<String, Anexo> getAnexo() {
if(anexo==null) {
anexo = new AutoMap<String, Anexo>(String.class, Anexo.class);
}
return anexo;
}
Where AutoMap is my specialized Map class.
Thanks,
Edson
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
I've just found a workaround: If not my specialized collection, then I do change
the type whenever I call getAnexo() before returning.
Method became:
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "anexo", joinColumns = @JoinColumn(name =
"cadastroprofissional_id"))
@MapKeyColumn(name = "tipo")
public Map<String, Anexo> getAnexo() {
if(anexo==null || !(anexo instanceof AutoMap)) {
anexo = new AutoMap<String, Anexo>(String.class, Anexo.class, anexo);
}
return anexo;
}
These are not big bloated objects, I can deal with the encapsulation process
without any penalty.
Regards,
Edson
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users