|
1 | 1 | package ru.javawebinar.topjava.model; |
2 | 2 |
|
| 3 | +import org.hibernate.validator.constraints.Email; |
| 4 | +import org.hibernate.validator.constraints.Length; |
| 5 | +import org.hibernate.validator.constraints.NotEmpty; |
| 6 | + |
| 7 | +import javax.persistence.*; |
3 | 8 | import java.util.Date; |
4 | 9 | import java.util.EnumSet; |
5 | 10 | import java.util.Set; |
|
8 | 13 | * User: gkislin |
9 | 14 | * Date: 22.08.2014 |
10 | 15 | */ |
| 16 | +@Entity |
| 17 | +@Table(name = "USERS", uniqueConstraints = {@UniqueConstraint(columnNames = "email", name = "unique_email")}) |
| 18 | +@NamedQueries({ |
| 19 | + @NamedQuery(name = User.DELETE, query = "DELETE FROM User u WHERE u.id=:id"), |
| 20 | + @NamedQuery(name = User.BY_EMAIL, query = "SELECT u FROM User u LEFT JOIN FETCH u.roles WHERE u.email=?1"), |
| 21 | + @NamedQuery(name = User.ALL_SORTED, query = "SELECT u FROM User u LEFT JOIN FETCH u.roles ORDER BY u.name, u.email"), |
| 22 | +}) |
11 | 23 | public class User extends NamedEntity { |
12 | 24 |
|
| 25 | + public static final String DELETE = "User.delete"; |
| 26 | + public static final String ALL_SORTED = "User.getAllSorted"; |
| 27 | + public static final String BY_EMAIL = "User.getByEmail"; |
| 28 | + |
| 29 | + @Column(name = "email", nullable = false, unique = true) |
| 30 | + @Email |
| 31 | + @NotEmpty |
13 | 32 | protected String email; |
14 | 33 |
|
| 34 | + @Column(name = "password", nullable = false) |
| 35 | + @NotEmpty |
| 36 | + @Length(min = 5) |
15 | 37 | protected String password; |
16 | 38 |
|
| 39 | + @Column(name = "enabled", nullable = false) |
17 | 40 | protected boolean enabled = true; |
18 | 41 |
|
| 42 | + @Column(name = "registered", columnDefinition = "timestamp default now()") |
19 | 43 | protected Date registered; |
20 | 44 |
|
| 45 | + @Enumerated(EnumType.STRING) |
| 46 | + @CollectionTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id")) |
| 47 | + @Column(name = "role") |
| 48 | + @ElementCollection(fetch = FetchType.EAGER) |
21 | 49 | protected Set<Role> roles; |
22 | 50 |
|
23 | 51 | public User() { |
|
0 commit comments