Список JPQL, предложение Set IN? - PullRequest
0 голосов
/ 05 июля 2019

Я хочу сравнить два списка, являются ли они подмножеством друг друга.Я хочу сделать это с org.springframework.data.jpa.repository.Query, но у меня есть следующее исключение: java.lang.IllegalArgumentException: Parameter value [ADMIN] did not match expected type [java.util.Collection (n/a)]

Мой запрос выглядит так:

@Query("SELECT u FROM User u WHERE u.roles in :roles ")
fun findByRoles(pageable: Pageable, roles: Set<Role>): Page<User>

Вот мои классы сущностей: @ Entity

class User(
        var name: String,
        @Column(nullable = false, columnDefinition = "enum('ADMIN','USER')")
        @ElementCollection(targetClass = Role::class, fetch = FetchType.EAGER)
        @Enumerated(EnumType.STRING)
        var roles: List<Role>,
        @Id
        @SequenceGenerator(name = "user_id_seq", sequenceName = "user_id_seq", initialValue = 1, allocationSize = 1)
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_id_seq")
        var id: Long? = null
)

enum class Role { ADMIN, USER }

И я положил [USER, ADMIN] в свой набор.

Есть идеи?

Обновление:

Когда я изменяю сущности, оно работает.Я изменил сущность Роль на класс с enum.

@Entity
@Table(name = "cegportal_user")
class User(
        @Column(unique = true, nullable = false) var kauId: String,
        var name: String,

        @ManyToMany(fetch = FetchType.EAGER)
        @JoinTable(name = "user_role",
                joinColumns = [JoinColumn(name = "user_id")],
                inverseJoinColumns = [JoinColumn(name = "role_id")])
        var roles: Set<Role>,

        @Id
        @SequenceGenerator(name = "cegportal_user_id_seq", sequenceName = "cegportal_user_id_seq", initialValue = 1, allocationSize = 1)
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "cegportal_user_id_seq")
        var id: Long? = null
)

@Entity
class Role(
        @Column(unique = true, nullable = false)
        var name: String,
        @Id
        @SequenceGenerator(name = "role_id_seq", sequenceName = "role_id_seq", initialValue = 1, allocationSize = 1)
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "role_id_seq")
        var id: Long? = null
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...