Вложенное соединение 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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