Код: Выделить всё
@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
Мобильная версия