View Javadoc

1   /**
2    * 
3    */
4   package de.tivsource.page.entity.application;
5   
6   import java.util.Date;
7   import java.util.List;
8   
9   import javax.persistence.Basic;
10  import javax.persistence.CascadeType;
11  import javax.persistence.Column;
12  import javax.persistence.Embedded;
13  import javax.persistence.Entity;
14  import javax.persistence.FetchType;
15  import javax.persistence.Id;
16  import javax.persistence.JoinColumn;
17  import javax.persistence.ManyToOne;
18  import javax.persistence.OneToMany;
19  import javax.persistence.Temporal;
20  
21  import org.hibernate.envers.Audited;
22  import org.hibernate.search.annotations.DocumentId;
23  
24  import de.tivsource.page.entity.embeddable.Address;
25  import de.tivsource.page.entity.embeddable.ContactDetails;
26  import de.tivsource.page.entity.vacancy.Vacancy;
27  
28  /**
29   * @author Marc Michele
30   *
31   */
32  @Audited
33  @Entity
34  public class Application {
35  
36      /**
37       * UUID des Objektes der Klasse Application, diese ID ist einmalig über alle
38       * Objekte hinweg und sollte der bevorzugte weg sein auf bestimmte Objekte
39       * zuzugreifen.
40       */
41      @Id
42      @DocumentId
43      @Column(name="uuid", unique=true, length=42)
44      private String uuid;
45  
46  	/**
47  	 * Geschlecht des Kontaktes.
48  	 */
49      @Basic
50      @org.hibernate.annotations.Type(type = "yes_no")
51      private Boolean gender;
52  
53  	/**
54  	 * Vorname des Kontakes.
55  	 */
56  	private String firstname;
57  
58  	/**
59  	 * Nachname des Kontaktes.
60  	 */
61  	private String lastname;
62  
63      @Embedded
64      private Address address;
65  
66      @Embedded
67      private ContactDetails contactDetails;
68  
69      @Temporal(javax.persistence.TemporalType.TIMESTAMP)
70      private Date birthday;
71  
72      @OneToMany(mappedBy = "application", cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, orphanRemoval=true)
73      private List<Education> educations;
74  
75      @ManyToOne(fetch = FetchType.EAGER)
76      @JoinColumn(name = "vacancy_uuid")
77      private Vacancy vacancy;
78  
79      @Temporal(javax.persistence.TemporalType.TIMESTAMP)
80      private Date created;
81  
82      private String createdAddress;
83  
84  }// Ende class