package kr.debop4j.data.mapping.model.annotated; import com.google.common.base.Objects; import kr.debop4j.data.jpa.domain.JpaEntityBase; import lombok.Getter; import lombok.Setter; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; import org.hibernate.annotations.Index; import javax.persistence.*; /** * org.annotated.mapping.domain.model.JpaUser * 참고 : 테이블이나 컬럼명에 예러 표시 날 때 : Inspection 'DataSource ORM Annotations Problem' options * Jpa@author 배성혁 ( sunghyouk.bae@gmail.com ) * * @since 12. 11. 20. */ @Entity @Table(name = "JPA_USERS") @Cacheable @DynamicInsert @DynamicUpdate @Getter @Setter public class JpaUser extends JpaEntityBase { private static final long serialVersionUID = -4278711858304883834L; @Id @GeneratedValue @Column(name = "USER_ID") private Long id; @Column(name = "FIRST_NAME") private String firstname; @Column(name = "LAST_NAME") private String lastname; @Column(name = "USER_NAME", length = 128, nullable = false) @Index(name = "IX_USER_USER_NAME") private String username; @Column(name = "USER_PWD", length = 64, nullable = false) @Index(name = "IX_USER_USER_NAME") private String password; @Column(name = "USER_EMAIL") @Index(name = "IX_USER_EMAIL") private String email; @Column(name = "IS_ACTIVE", nullable = false) @Basic(fetch = FetchType.LAZY) private String exAttrs; @Embedded @AttributeOverrides( { @AttributeOverride(name = "street", column = @Column(name = "HOME_STREET", length = 128)), @AttributeOverride(name = "zipcode", column = @Column(name = "HOME_ZIPCODE", length = 24)), @AttributeOverride(name = "city", column = @Column(name = "HOME_CITY", length = 128)), } ) private JpaAddress homeAddress = new JpaAddress(); @Embedded @AttributeOverrides( { @AttributeOverride(name = "street", column = @Column(name = "OFFICE_STREET", length = 128)), @AttributeOverride(name = "zipcode", column = @Column(name = "OFFICE_ZIPCODE", length = 24)), @AttributeOverride(name = "city", column = @Column(name = "OFFICE_CITY", length = 128)), } ) private JpaAddress officeAddress = new JpaAddress(); @Override public int hashCode() { if (isPersisted()) return Objects.hashCode(id); return Objects.hashCode(username, password); } @Override protected Objects.ToStringHelper buildStringHelper() { return super.buildStringHelper() .add("firstname", firstname) .add("lastname", lastname) .add("username", username) .add("userpwd", password) .add("userEmail", email) .add("homeAddress", homeAddress) .add("officeAddress", officeAddress); } }