0
Comme le titre l'indique, j'essaie de sélectionner à la fois le nom d'utilisateur et le nom de rôle en utilisant la requête suivante.Sélectionnez le nom d'utilisateur et le nom de rôle
select u.username, r.name
from users u, role r
inner join users_roles ur
on ur.user_id = u.id
where username = ?;
Cependant, je reçois l'erreur ci-dessous
[2017-04-05 21:34:49] [42P01] ERROR: invalid reference to FROM-clause entry for table "u"
[2017-04-05 21:34:49] Hint: There is an entry for table "u", but it cannot be referenced from this part of the query.
[2017-04-05 21:34:49] Position: 79
Mon entité utilisateur est la suivante
@Entity(name = "users") // Postgres doesn't like the table name "user"
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String username;
...
@ManyToMany
@JoinTable(
name = "users_roles",
joinColumns = @JoinColumn(
name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(
name = "role_id", referencedColumnName = "id"))
private Collection<Role> roles;
...
Et mon entité rôle est comme suit
@Entity
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
@ManyToMany(mappedBy = "roles")
private Collection<User> users;
...
Tous des indices sur ce que je fais wro ng?
Veuillez ajouter du contexte à cette réponse. Que fait cette requête? Comment cela résout-il la question originale? –
La requête renvoie une liste de tuples où la première colonne est un nom d'utilisateur et la seconde est le nom du rôle. J'utilise cela en conjonction avec la sécurité du printemps. – user672009