Tengo una asignación como este:

@ManyToMany(cascade = CascadeType.PERSIST)
    @JoinTable(
            name="product_product_catalog",
            joinColumns={@JoinColumn(name="product_catalog", referencedColumnName="product_catalog")},
            inverseJoinColumns={@JoinColumn(name="product", referencedColumnName="product")})
    public List<Product> products = new ArrayList<Product>();

Puedo obtener los productos para el catálogo bien, pero no puedo (de forma dinámica) de los productos.
¿Cómo podría yo para ellos?
Probablemente tengo que escribir muchos-a-muchos consulta HQL con la orden-por la cláusula? Yo, sin embargo, de pasar el orderBy campo nombre de la cadena para la consulta, o es que hay una solución mejor?

Tablas son:
productos,
product_catalog,
product_product_catalog (tabla asociativa)

P. S. El Uso De Play! Marco JPASupport para mi entidades.

OriginalEl autor Indrek | 2010-06-08

1 Comentario

  1. 23

    Puedo obtener los productos para el catálogo bien, pero no puedo (de forma dinámica) de los productos. ¿Cómo podría yo para ellos?

    No es posible si se deja JPA recuperar la asociación. Las asignaciones son estáticas, la mejor cosa que usted puede hacer con asignaciones para especificar el orden en «recuperar el tiempo»:

    9.1.28 OrderBy Anotación

    La OrderBy anotación especifica el orden de los elementos de una colección de valores de la asociación en el momento de la asociación se recupera.

    @Target({METHOD, FIELD}) @Retention(RUNTIME)
    public @interface OrderBy {
       String value() default "";
    }

    La sintaxis del valor del pedido
    elemento es una orderby_list, como
    de la siguiente manera:

    orderby_list::= orderby_item [,orderby_item]*
    orderby_item::= property_or_field_name [ASC | DESC]

    Si ASC o DESC no se especifica, ASC (orden ascendente) es asumido.

    Si el orden es el elemento no se especifica, el pedido por parte de la clave primaria de la entidad asociada se supone.

    La propiedad o el campo nombre debe corresponder a la de un persistente de la propiedad o en el campo de la clase asociada. Las propiedades o campos que se utilizan en el orden debe corresponden a las columnas para que los operadores de comparación son compatibles.

    Ejemplo:

    @Entity public class Course {
      ...
      @ManyToMany
      @OrderBy("lastname ASC")
      public List<Student> getStudents() {...};
      ...
    }

    Así que usa un buscador personalizado o a ordenar su lista de Java usando una Comparator.

    OriginalEl autor Pascal Thivent

Dejar respuesta

Please enter your comment!
Please enter your name here