Tengo una asignación @ManyToMany donde la tabla se autoreferencia a través de una tabla de asignación, y queremos pedir una identificación de la orden en la tabla de asignación real, pero les resulta difícil configurar esto .Ordenando al asignar el valor de la tabla en Hibernate
Podríamos realizarlo en hibernate xml, por lo que es natural suponer que el soporte está ahí en las anotaciones JPA. ¿Alguien sabe cómo podemos pedir un valor en la tabla de mapeo?
la mesa es:
wap_site_components
intid
strname
intcomponentdef
dtmcreated
intcustomer
y la tabla de asignación que se auto-referencias es:
wap_site_component_relations
intid
intparent (references intid in wap_site_components)
intchild (references intid in wap_site_components)
intorder (this is the value we want to order the collection on)
En Anotaciones de Hibernate tenemos:
@ManyToMany (fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable (name = "wap_site_component_relations",
joinColumns = {@JoinColumn (name = "intparent", referencedColumnName = "id") },
inverseJoinColumns = {@JoinColumn (name = "intchild", referencedColumnName = "id") })
public Set<WapComponent> getChildren() {
return children;
}
Ésta es la forma en que realizamos en hibernate xml:
<set
name="children"
table="wap_site_component_relations"
lazy="true"
cascade="none"
sort="unsorted"
order-by="intorder"
mutable="false"
>
<cache
usage="read-only"
/>
<key
column="intparent"
>
</key>
<many-to-many
class="se.plusfoursix.im46.data.wap.WapComponent"
column="intchild"
outer-join="auto"
/>
</set>
Por lo tanto, queremos utilizar la etiqueta @OrderBy pero no podemos hacer referencia al valor de intorder en la tabla de asignación. ¿Algunas ideas? Gracias.
(Hemos probado una @OrderBy (intorder) sobre la colección de los niños en el código pero que no ha funcionado para nosotros)
También debo añadir aquí que podríamos hacer esto haciendo que la tabla de asignación de un grano, pero preferiría no hacerlo. – bowsie