package org.hibernate.test.annotations.manytoone;

import java.util.Date;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name = "CTVUSERS")
@IdClass(UserPK.class)
@SequenceGenerator(name = "UserSeq", sequenceName = "SQ_USER")
public class User {
	@Id
	@Column(name = "CTVUSERS_KEY")
	private Long userKey;

	@Id
	@Column(name = "CTVUSERS_START_DATE")
	private Date startDate;

	@Id
	@Column(name = "CTVUSERS_END_DATE")
	private Date endDate;

	@Column(name = "CTVUSERS_CREATE_USERS_KEY")
	private Long createdBy;

	@Column(name = "CTVUSERS_CREATE_DATE")
	private Date createdOn;

	@Column(name = "CTVUSERS_ID")
	private String userId;

	@Column(name = "CTVUSERS_PREFX_KEY")
	private Integer prefix;

	@Column(name = "CTVUSERS_FIRST_NAME")
	private String firstName;

	@Column(name = "CTVUSERS_LAST_NAME1")
	private String lastName1;

	@Column(name = "CTVUSERS_LAST_NAME2")
	private String lastName2;

	@Column(name = "CTVUSERS_MIDDLE_NAME1")
	private String middleName1;

	@Column(name = "CTVUSERS_MIDDLE_NAME2")
	private String middleName2;

	@Column(name = "CTVUSERS_SUFFX_KEY")
	private Integer suffix;

	@Column(name = "CTVUSERS_BIRTH_DATE")
	private Date birthDate;

	@Column(name = "CTVUSERS_BIRTH_STATE_KEY")
	private Integer birthState;

	@Column(name = "CTVUSERS_BIRTH_CNTRY_KEY")
	private Integer birthCountry;

	@Column(name = "CTVUSERS_USERNAME")
	private String username;

	@Column(name = "CTVUSERS_PASSWORD")
	private String password;

	@Column(name = "CTVUSERS_LOTYP_KEY")
	private Integer userType;

	@Column(name = "CTVUSERS_PRIVL_KEY")
	private Integer privilege;

	@Column(name = "CTVUSERS_STATE_KEY")
	private Integer state;

	@Column(name = "CTVUSERS_CNTRY_KEY")
	private Integer country;

	@Column(name = "CTVUSERS_PREFERRED_NAME")
	private String preferredName;

	@Column(name = "CTVUSERS_BIRTH_PLACE")
	private String birthPlace;

	@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "user")
	private Set<DistrictUser> districtUsers;

	@Column(name = "CTVUSERS_SCHOL_KEY")
	private Long school;

	@Column(name = "CTVUSERS_CLSTR_KEY")
	private Long cluster;

	@Column(name = "CTVUSERS_LDTMM_KEY")
	private Long ldtmm;

	@Column(name = "CTVUSERS_LDTMD_KEY")
	private Long ldtmd;

	@Column(name = "CTVUSERS_PMTMP_KEY")
	private Long pmtmp;

}
