WIP:site
[hibernate4-maven-plugin] / src / it / multimodule / shared / src / main / java / ch / dvbern / demo / entities / Person.java
1 package ch.dvbern.demo.entities;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import javax.annotation.Nonnull;
6 import javax.persistence.Column;
7 import javax.persistence.Entity;
8 import javax.persistence.ForeignKey;
9 import javax.persistence.Index;
10 import javax.persistence.JoinColumn;
11 import javax.persistence.JoinTable;
12 import javax.persistence.ManyToMany;
13 import javax.persistence.Table;
14 import javax.persistence.UniqueConstraint;
15 import javax.validation.constraints.NotNull;
16 import javax.validation.constraints.Size;
17
18 import static ch.dvbern.demo.util.Constants.DB_DEFAULT_MAX_LENGTH;
19
20 /**
21  * Entity fuer personendaten
22  */
23 @Entity
24 @Table(uniqueConstraints = {
25         @UniqueConstraint(name = "person_uc1", columnNames = "vorname"),
26         @UniqueConstraint(name = "person_uc2", columnNames = "userErstellt"),
27         @UniqueConstraint(name = "person_uc3", columnNames = { "userErstellt", "vorname" }) // FIXME funktioniert nicht
28 })
29 public class Person extends AbstractEntity {
30
31         private static final long serialVersionUID = -9032257320578372570L;
32
33         @Nonnull
34         @Size(min = 1, max = DB_DEFAULT_MAX_LENGTH)
35         @Column(nullable = false)
36         @NotNull
37         private String vorname = "";
38
39         @Nonnull
40         @Size(min = 1, max = DB_DEFAULT_MAX_LENGTH)
41         @NotNull
42         @Column(nullable = false)
43         private String nachname = "";
44
45         @Nonnull
46         @ManyToMany
47         @JoinTable(
48                 name = "personen_adressen",
49                 joinColumns = @JoinColumn(name = "person_id", foreignKey = @ForeignKey(name = "person_fk1")),
50                 inverseJoinColumns = @JoinColumn(name = "adresse_id", foreignKey = @ForeignKey(name = "adresse_fk1")),
51                 indexes = {
52                         @Index(name = "personen_adressen_ix1", columnList = "person_id"),
53                         @Index(name = "personen_adressen_ix2", columnList = "adresse_id")
54                 }
55         )
56 //      @org.hibernate.annotations.ForeignKey(name = "person_fk1", inverseName = "adresse_fk1") // TODO ohne die Hibernate spez. Annotation funktioniert das Naming der Foreign Keys nicht
57         private List<Adresse> adressen = new ArrayList<>();
58
59
60         @Nonnull
61         public String getVorname() {
62                 return vorname;
63         }
64
65         public void setVorname(@Nonnull final String vorname) {
66                 this.vorname = vorname;
67         }
68
69         @Nonnull
70         public String getNachname() {
71                 return nachname;
72         }
73
74         public void setNachname(@Nonnull final String nachname) {
75                 this.nachname = nachname;
76         }
77
78         @Nonnull
79         public List<Adresse> getAdressen() {
80                 return adressen;
81         }
82
83         public void setAdressen(@Nonnull final List<Adresse> adressen) {
84                 this.adressen = adressen;
85         }
86 }