package com.tap5.hotelbooking.entities; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import org.hibernate.annotations.NaturalId; import org.hibernate.validator.constraints.Email; /** * Hotel Booking User * * @author karesti */ @Entity @NamedQueries( { @NamedQuery(name = User.ALL, query = "Select u from User u"), @NamedQuery(name = User.BY_USERNAME_OR_EMAIL, query = "Select u from User u where u.username = :username or u.email = :email"), @NamedQuery(name = User.BY_CREDENTIALS, query = "Select u from User u where u.username = :username and u.password = :password") }) @Table(name = "users") public class User { public static final String ALL = "User.all"; public static final String BY_USERNAME_OR_EMAIL = "User.byUserNameOrEmail"; public static final String BY_CREDENTIALS = "User.byCredentials"; private static final long serialVersionUID = 4060967693790504175L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NaturalId @Column(nullable = false, unique = true) @NotNull @Size(min = 3, max = 15) private String username; @Column(nullable = false) @NotNull @Size(min = 3, max = 50) private String fullname; @Column(nullable = false) @NotNull @Email private String email; @Column(nullable = false) @Size(min = 3, max = 12) @NotNull private String password; public User() { } public User(final String fullname, final String username, final String email) { this.fullname = fullname; this.username = username; this.email = email; } public User(final String fullname, final String username, final String email, final String password) { this(fullname, username, email); this.password = password; } public User(Long id, String username, String fullname, String email, String password) { super(); this.id = id; this.username = username; this.fullname = fullname; this.email = email; this.password = password; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("id "); builder.append(id); builder.append(","); builder.append("username "); builder.append(username); return builder.toString(); } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public void setFullname(String fullname) { this.fullname = fullname; } public String getFullname() { return fullname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }