Вложенное соединение JPQLJAVA

Программисты JAVA общаются здесь
Anonymous
Вложенное соединение JPQL

Сообщение Anonymous »

У меня есть 3 объекта:

Код: Выделить всё

@Entity
@Table(name = "users")
data class User(

@Id
var email: String? = null,

@ManyToMany
@JoinTable(
name = "user_roles",
joinColumns = [JoinColumn(name = "USER_ID", referencedColumnName = "EMAIL")],
inverseJoinColumns = [JoinColumn(name = "ROLE_ID", referencedColumnName = "NAME")]
)
var roles: Set? = null
)

Код: Выделить всё

@Entity
@Table(name = "roles")
data class Role(

@ManyToMany
@JoinTable(
name = "roles_privileges",
joinColumns = [JoinColumn(name = "ROLE_ID", referencedColumnName = "NAME")],
inverseJoinColumns = [JoinColumn(name = "PRIVILEGE_ID", referencedColumnName = "NAME")]
)
var privileges: Set
? = null
)

Код: Выделить всё

@Entity
@Table(name = "privileges")
data class Privilege(

@Id
var name: String? = null,
@ManyToMany(mappedBy = "privileges")
var roles: List? = null
)
И мне нужно извлечь все права пользователя
Я пробовал вот так^

Код: Выделить всё

    @Query("select p from User u left join fetch u.roles r left join fetch r.privileges p where u.email = :email")
fun getAllByUserEmail(email: String): Set
Но я получил следующую ошибку:

org.hibernate.query.SemanticException: запрос указал выборку соединения, но владелец полученной ассоциации не присутствовал в списке выбора [SqmSetJoin(entity.user.User(u).roles(r))]

Есть идеи, как это сделать правильно?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ested-join

Вернуться в «JAVA»