forked from ZipCodeCore/FinalGroupProjects-Java
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCustomer.java
More file actions
156 lines (119 loc) · 3.51 KB
/
Customer.java
File metadata and controls
156 lines (119 loc) · 3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package runner.entities;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonView;
import runner.views.Views;
import javax.persistence.*;
import java.time.LocalDate;
import java.util.Set;
import static javax.persistence.CascadeType.ALL;
@Entity
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@JsonView(Views.Profile.class)
@Column(nullable = false)
private String firstName;
@JsonView(Views.Profile.class)
private String middleName;
@JsonView(Views.Profile.class)
@Column(nullable = false)
private String lastName;
@JsonView(Views.Profile.class)
@Column(nullable = false)
private LocalDate dateOfBirth;
@Column(nullable = false)
private String socialSecurity;
@Column(nullable = false)
@JsonView(Views.Email.class)
private String email;
@JsonView(Views.PhoneNumber.class)
@Column(nullable = false)
private String phoneNumber;
@JsonView(Views.Address.class)
@OneToOne(cascade = ALL, fetch = FetchType.EAGER)
private Address address;
@JsonBackReference(value = "login")
@OneToOne(mappedBy = "customer", cascade = ALL,fetch = FetchType.EAGER)
@PrimaryKeyJoinColumn //sharing primary key with user login since creating a new user requires a login anyways
private Login login;
@OneToMany(mappedBy = "customer", cascade = ALL,fetch = FetchType.EAGER)
@OrderBy
@JsonBackReference
private Set<Account> accounts;
public Customer() {
}
public Customer(Long id, String firstName, String middleName, String lastName, String socialSecurity) {
this.id = id;
this.firstName = firstName;
this.middleName = middleName;
this.lastName = lastName;
this.socialSecurity = socialSecurity;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getMiddleName() {
return middleName;
}
public void setMiddleName(String middleName) {
this.middleName = middleName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public LocalDate getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(LocalDate dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getSocialSecurity() {
return socialSecurity;
}
public void setSocialSecurity(String socialSecurity) {
this.socialSecurity = socialSecurity;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public Login getLogin() {
return login;
}
public void setLogin(Login login) {
this.login = login;
}
public Set<Account> getAccounts() {
return accounts;
}
public void setAccounts(Set<Account> accounts) {
this.accounts = accounts;
}
}