/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.jpa.test.criteria.enumcollection; import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.Table; import java.util.HashSet; import java.util.Set; @Entity @Table(name = "users") public class User { private Long id; private Set<Role> roles = new HashSet<Role>(); @Id public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Enumerated(EnumType.STRING) @ElementCollection(targetClass = Role.class, fetch = FetchType.LAZY) @JoinTable(name = "user_role", joinColumns = {@JoinColumn(name = "user_id")}) @Column(name = "role_name", nullable = false) public Set<Role> getRoles() { return roles; } public void setRoles(Set<Role> roles) { this.roles = roles; } public enum Role { Admin; } }