Tengo una pregunta con la consulta HQL y de hibernación.

Tengo una clase de usuario y una función de clase. Un usuario puede tener muchas funciones. Así que tengo un ManyToMany relatation como este:

En la clase de usuario:

@ManyToMany(fetch = FetchType.LAZY)
@oinTable(name = "PORTAIL_USERROLE", joinColumns = { @JoinColumn(name = "USERID", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "ROLE", nullable = false, updatable = false) })
public Set<Portailrole> getPortailroles() {
    return this.portailroles;
}

En función de la clase:

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "PORTAIL_USERROLE", joinColumns = { @JoinColumn(name = "ROLE", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "USERID", nullable = false, updatable = false) })
public Set<Portailuser> getPortailusers() {
    return this.portailusers;
}

Esta asignación ha creado una 3ª mesa (PORTAIL_USERROLE) donde las relaciones son adecuadas.
Todo el trabajo fino como este. Cuando tengo un usuario, puedo recuperar funciones.

Pero, mi pregunta es: en una consulta HQL, ¿cómo puedo obtener todos los usuarios que tienen una función específica ? Cualquier clase representa PORTAIL_USERROLE de la tabla, así que no sé cómo hacer mi consulta HQL.

cuando Pascal Thivent editado esta pregunta cambió JoinTable a oinTable y de la onu capitalizado de una frase absolutamente válida antes de quitar el ‘Gracias’ de la final. En serio ¿cuál era el punto, se hizo la pregunta menos legible?

OriginalEl autor Kiva | 2010-08-13

2 Comentarios

  1. 21

    Esto debe hacerlo:

    from Portailuser u join u.portailroles r where r.name=:roleName
    Muchas gracias. Yo no creo que hibernan gestiona manyToMany como este.
    Eso es sólo linq no?
    gracias esto me ayuda demasiado

    OriginalEl autor Maurice Perry

  2. 2

    puede utilizar
    @WhereJoinTable
    Como este:

     @JoinTable(name = "OFFICE_USER_POSITION", joinColumns = {
            @JoinColumn(name = "user_id", referencedColumnName = "id")}, inverseJoinColumns = {
            @JoinColumn(name = "POST_ID", referencedColumnName = "id")})
    @WhereJoinTable(clause = "primary_flag='" + YES + "' and del_flag='" + DEL_FLAG_NORMAL + "'")

    OriginalEl autor dezhi.shen

Dejar respuesta

Please enter your comment!
Please enter your name here