Tengo 3 tablas, Role[roleId, roleName]
, Token[tokenID, tokenName]
& ROLETOKENASSOCIATION[roleId, tokenID]
. El tercero fue creado automáticamente por Hibernate. Ahora bien, si simplemente escribo una consulta para obtener todos los objetos de la clase Rol, significa que todos los objetos de rol se asocian con el tokenID asociado & tokenName.¿Cómo se escribe una consulta HQL para muchas asociaciones?
Solo quería la asociación como unidireccional. es decir: Roles ---> Fichas Así que la anotación en la clase de papel se parece,
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int roleId;
private String roleName;
@ManyToMany
@JoinTable(name="ROLE_TOKEN_ASSOCIATION",
joinColumns={@JoinColumn(name="roleId")},
inverseJoinColumns={@JoinColumn(name="tokenID")})
private List<Token> tkns;
//Getters & Setters
ahora quiero los tokenNames para el roleId específica. Primero hice una consulta como esta SELECT tkns.tokenName FROM Role WHERE Role.roleId=:roleId
Pero terminé con algún error de desreferencia.
Luego cambié la consulta a SELECT tkns FROM Role r WHERE r.roleId=:roleId
Ahora tengo lo que quería. Pero viene con roleId también.
¿Cómo obtendré tokenName en sí? En realidad, mi problema está resuelto, pero me gustaría saber cómo hacerlo.
Me será útil, si alguien explica la Construcción de consultas.
Cualquier sugerencia!
En realidad, soy nuevo en hibernación y HQL. ¡Sería útil para mí si explicas la consulta! –
@NooB: actualizado. – axtavt