JPA Criterios de API: condición Múltiples en LEFT JOIN

Tengo una combinación de referencia como la siguiente para que la primera expresión de la combinación es construido por el API de JPA automáticamente.

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> c = cb.createTupleQuery();
Root<Demand> demands = c.from(Demand.class);
Join<Demand, Metadata> joinMetadata = demands.join("metadatas", JoinType.LEFT);

pero, me gustaría añadir una condición adicional a mi joinMetadata como Metadatos.type=»AFFECTATION_KEY», pero no sé cómo.

Muchas gracias por la ayuda

OriginalEl autor yesil | 2012-06-18

2 Kommentare

  1. 11

    JPA siempre se une a la asignación de la combinación de columnas, sólo. JPA 2.0 no admite una cláusula ON, pero la 2.1 proyecto de no tener este apoyo.

    EclipseLink 2.4 cuenta con el apoyo de una cláusula,

    Ver,
    http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/JPQL#ON

    También es posible a través de la API de Criterios, el uso de la EclipseLink nativo Expresión de la API que proporciona on cláusula de apoyo,

    Ver,
    http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/Criteria#JpaCriteriaBuilder_and_EclipseLink_Extensions

    OriginalEl autor James

  2. 7

    Y de Hibernación Criterios del API de la versión 3.6, se admite también:

        Criteria c = session.createCriteria(Tuple.class);
    
        c.createAlias("demands", "d")
        .createAlias("d.metadata", "m", 
            Criteria.LEFT_JOIN, Restrictions.eq("m.type", "AFFECTATION_KEY"));

    O puede que desee Restricciones.eqProperty() para que el último bit. Nota los menos apreciados de la versión de createAlias() con el parámetro cuarto. Aquí está una cita de la documentación

    Parámetros:

    • associationPath – Un punto-separados ruta de la propiedad de
    • alias Los alias para asignar a la suma de asociación (para la referencia más adelante).
    • joinType – El tipo de unión a utilizar.
    • withClause – Los criterios para ser añadido a la condición de combinación (EN la cláusula where)

    Hibernate API 3.6

    Gracias por tu comentario. Por desgracia, yo sólo puede utilizar JPA Criterios de la API, no puede de referencia de la API de hibernate aunque hibernate es nuestro implementación de JPA.
    Y en JPQL, uno podría usar la Hibernación específicos WITH para agregar condiciones de combinación, tales como from Demand d left join Metadata md with md.type="AFFECTATION_KEY".
    JPQL no admite WITH – que es HQL que se está refiriendo a

    OriginalEl autor carbontax

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea