아래와 같은 Entity가 있다고 생각하자
@Entity
@Table(name = "item")
@.....
class Item(
id: Long? = null,
attributes: Set<Attribute>
) : AuditingEntity() {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = id
@ElementCollection
@Enumerated(EnumType.STRING)
@CollectionTable(name = "attribute", joinColumns = [JoinColumn(name = "item_id")])
@Column(nullable = false, name = "attribute", columnDefinition = "varchar(20) not null comment '아이템속성'")
var attributes: MutableSet<Attribute> = attributes.toMutableSet()
protected set
ElementCollection으로 지정된 Enum
enum class Attribute(
val description: String
) {
A("A야"),
B("B야"),
C("C야")
}
해당 Entity 에 대한 조회시 attributes가 'A', 'C'인 것들을 찾을 경우 다음과 같다. - QueryDSL
.and(...
.and( item.attributes.any().`in`(listOf(Attribute.A, Attribute.C)) )
.and(...