Skip to content

Commit 5bf7f59

Browse files
committed
relationships
1 parent d76b9d6 commit 5bf7f59

File tree

6 files changed

+243
-3
lines changed

6 files changed

+243
-3
lines changed

hibernate/ifinances/src/main/java/com/rakeshv/ifinances/models/Account.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import lombok.Builder;
55
import lombok.Data;
66
import lombok.NoArgsConstructor;
7+
import org.springframework.transaction.annotation.Transactional;
78

89
import javax.persistence.CascadeType;
910
import javax.persistence.Column;
@@ -80,4 +81,18 @@ public class Account {
8081

8182
@Column(name = "CREATED_BY")
8283
private String createdBy;
84+
85+
public List<Transaction> getTransactions() {
86+
if (transactions == null)
87+
transactions = new ArrayList<>();
88+
return transactions;
89+
}
90+
91+
92+
public Set<User> getUsers() {
93+
if (users == null) {
94+
users = new HashSet<>();
95+
}
96+
return users;
97+
}
8398
}

hibernate/ifinances/src/main/java/com/rakeshv/ifinances/models/Bank.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,12 @@ public class Bank {
6262
@MapKeyColumn(name="POSITION_TYPE")
6363
@Column(name="NAME")
6464
private Map<String, String> contacts = new HashMap<String, String>();
65+
66+
67+
public Map<String, String> getContacts() {
68+
if (contacts == null) {
69+
contacts = new HashMap<>();
70+
}
71+
return contacts;
72+
}
6573
}

hibernate/ifinances/src/main/java/com/rakeshv/ifinances/models/Budget.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,11 @@ public class Budget {
4444
@JoinTable(name="BUDGET_TRANSACTION", joinColumns=@JoinColumn(name="BUDGET_ID"),
4545
inverseJoinColumns=@JoinColumn(name="TRANSACTION_ID"))
4646
private List<Transaction> transactions = new ArrayList<>();
47+
48+
public List<Transaction> getTransactions() {
49+
if (transactions == null) {
50+
transactions = new ArrayList<>();
51+
}
52+
return transactions;
53+
}
4754
}

hibernate/ifinances/src/main/java/com/rakeshv/ifinances/models/User.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,30 @@
55
import lombok.Data;
66
import lombok.NoArgsConstructor;
77
import org.hibernate.annotations.Formula;
8+
import org.springframework.transaction.annotation.Transactional;
89

10+
import javax.persistence.AttributeOverride;
11+
import javax.persistence.AttributeOverrides;
12+
import javax.persistence.CascadeType;
13+
import javax.persistence.CollectionTable;
914
import javax.persistence.Column;
15+
import javax.persistence.ElementCollection;
16+
import javax.persistence.Embedded;
1017
import javax.persistence.Entity;
1118
import javax.persistence.GeneratedValue;
1219
import javax.persistence.GenerationType;
1320
import javax.persistence.Id;
21+
import javax.persistence.JoinColumn;
22+
import javax.persistence.ManyToMany;
23+
import javax.persistence.OneToOne;
1424
import javax.persistence.SequenceGenerator;
1525
import javax.persistence.Table;
1626
import javax.persistence.Transient;
27+
import java.util.ArrayList;
1728
import java.util.Date;
29+
import java.util.HashSet;
30+
import java.util.List;
31+
import java.util.Set;
1832

1933
@Data
2034
@AllArgsConstructor
@@ -56,7 +70,27 @@ public class User {
5670
@Transient
5771
private boolean valid;
5872

73+
// @ElementCollection
74+
// @CollectionTable(name = "user_address", joinColumns = @JoinColumn(name = "USER_ID"))
75+
// @AttributeOverrides({@AttributeOverride(name = "addressLine1", column = @Column(name = "USER_ADDRESS_LINE_1")),
76+
// @AttributeOverride(name = "addressLine2", column = @Column(name = "USER_ADDRESS_LINE_2"))
77+
// })
78+
@Embedded
79+
private Address address;
5980
// @Formula("YEAR(CURDATE()) - YEAR(BIRTH_DATE)")
6081
@Formula("lower(datediff(curdate(),BIRTH_DATE)/365)")
6182
private int age;
83+
84+
//// @OneToOne(mappedBy = "user")
85+
// private Credential credential;
86+
87+
@ManyToMany(cascade = CascadeType.ALL, mappedBy = "users")
88+
private Set<Account> accounts = new HashSet<>();
89+
90+
public Set<Account> getAccounts() {
91+
if (accounts == null) {
92+
accounts = new HashSet<>();
93+
}
94+
return accounts;
95+
}
6296
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.rakeshv.ifinances.models;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
import javax.persistence.Column;
9+
import javax.persistence.Entity;
10+
import javax.persistence.GeneratedValue;
11+
import javax.persistence.Id;
12+
import javax.persistence.Table;
13+
14+
@Data
15+
@AllArgsConstructor
16+
@NoArgsConstructor
17+
@Builder
18+
//@Entity
19+
//@Table(name = "user_address")
20+
public class UserAddress {
21+
@Column(name = "USER_ADDRESS_LINE_1")
22+
private String addressLine1;
23+
24+
@Column(name = "USER_ADDRESS_LINE_2")
25+
private String addressLine2;
26+
27+
@Column(name = "CITY")
28+
private String city;
29+
30+
@Column(name = "STATE")
31+
private String state;
32+
33+
@Column(name = "ZIP_CODE")
34+
private String zipCode;
35+
}

hibernate/ifinances/src/main/java/com/rakeshv/ifinances/utils/DbLoader.java

Lines changed: 144 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,50 @@
11
package com.rakeshv.ifinances.utils;
22

3+
import com.rakeshv.ifinances.models.Account;
4+
import com.rakeshv.ifinances.models.Address;
5+
import com.rakeshv.ifinances.models.Bank;
6+
import com.rakeshv.ifinances.models.Budget;
7+
import com.rakeshv.ifinances.models.Credential;
38
import com.rakeshv.ifinances.models.TimeTest;
9+
import com.rakeshv.ifinances.models.Transaction;
410
import com.rakeshv.ifinances.models.User;
11+
import com.rakeshv.ifinances.repositories.AccountRepository;
12+
import com.rakeshv.ifinances.repositories.BankRepository;
13+
import com.rakeshv.ifinances.repositories.BudgetRepository;
14+
import com.rakeshv.ifinances.repositories.CredentialRepository;
515
import com.rakeshv.ifinances.repositories.TimeTestRepository;
16+
import com.rakeshv.ifinances.repositories.TransactionRepository;
617
import com.rakeshv.ifinances.repositories.UserRepository;
718
import org.springframework.beans.factory.annotation.Autowired;
819
import org.springframework.boot.CommandLineRunner;
920
import org.springframework.stereotype.Component;
21+
import org.springframework.transaction.annotation.Transactional;
1022

23+
import java.math.BigDecimal;
1124
import java.sql.Time;
1225
import java.sql.Timestamp;
1326
import java.util.Calendar;
1427
import java.util.Date;
1528
import java.util.List;
1629

1730
@Component
31+
@Transactional
1832
public class DbLoader implements CommandLineRunner {
1933

2034
@Autowired
2135
TimeTestRepository timeTestRepository;
2236
@Autowired
2337
UserRepository userRepository;
38+
@Autowired
39+
BankRepository bankRepository;
40+
@Autowired
41+
CredentialRepository credentialRepository;
42+
@Autowired
43+
private AccountRepository accountRepository;
44+
@Autowired
45+
private TransactionRepository transactionRepository;
46+
@Autowired
47+
private BudgetRepository budgetRepository;
2448

2549
@Override
2650
public void run(String... args) throws Exception {
@@ -35,6 +59,22 @@ public void run(String... args) throws Exception {
3559
.sqlTimestampColumn(new Timestamp(new Date().getTime())).build();
3660
// timeTestRepository.save(timeTest);
3761

62+
Address address = Address.builder()
63+
.addressLine1("33 Wall street")
64+
.addressLine2("Suite 302")
65+
.city("New York")
66+
.state("NY")
67+
.zipCode("27914")
68+
.build();
69+
70+
71+
Address address1 = Address.builder()
72+
.addressLine1("11 manhattan street")
73+
.addressLine2("Floor 1")
74+
.city("Manhattan")
75+
.state("NY")
76+
.zipCode("97214").build();
77+
3878
User user = User.builder()
3979
.createdBy("Kevin")
4080
.birthDate(getBirthday())
@@ -43,12 +83,113 @@ public void run(String... args) throws Exception {
4383
.firstName("Kevin")
4484
.lastName("Bowersox")
4585
.lastUpdatedBy("kevin")
46-
.lastUpdatedDate(new Date()).build();
86+
.lastUpdatedDate(new Date())
87+
.address(address).build();
88+
89+
User user1 = User.builder()
90+
.createdBy("Plural")
91+
.birthDate(getBirthday())
92+
.createdDate(new Date())
93+
.emailAddress("tst@plural.com")
94+
.firstName("plural")
95+
.lastName("sight")
96+
.lastUpdatedBy("plurals")
97+
.lastUpdatedDate(new Date())
98+
.address(address).build();
99+
100+
Credential credential = Credential.builder()
101+
.password("test")
102+
.username("user")
103+
.user(user).build();
104+
105+
// user.setCredential(credential);
106+
// credentialRepository.save(credential);
47107
// userRepository.save(user);
48108

49-
List<User> users = userRepository.findAll();
109+
// List<User> users = userRepository.findAll();
110+
//
111+
// users.forEach(u -> System.out.println(u.toString()));
112+
113+
114+
115+
Bank bank = Bank.builder()
116+
.name("Federal Trust")
117+
.createdBy("Kevein Bowersox")
118+
.createdDate(new Date())
119+
.lastUpdatedBy("Kevin")
120+
.lastUpdatedDate(new Date())
121+
.international(false)
122+
.address(address).build();
123+
124+
bank.getContacts().put("MANAGER", "JOE");
125+
bank.getContacts().put("TELLER", "Mary");
126+
// bankRepository.save(bank);
127+
128+
Transaction transaction = Transaction.builder()
129+
.amount(new BigDecimal("50.00"))
130+
.title("Belt")
131+
.closingBalance(new BigDecimal("0.00"))
132+
.createdBy("Kevin")
133+
.createdDate(new Date())
134+
.initialBalance(new BigDecimal("10.00"))
135+
.lastUpdatedBy("Bowersox")
136+
.lastUpdatedDate(new Date())
137+
.notes("New dress belt")
138+
.transactionType("Debit").build();
139+
140+
Account account = Account.builder()
141+
.createdBy("Kevein")
142+
.createdDate(new Date())
143+
.currentBalance(new BigDecimal("5.00"))
144+
.initialBalance(new BigDecimal("0.00"))
145+
.closeDate(new Date())
146+
.lastUpdatedBy("Bowersoz")
147+
.lastUpdatedDate(new Date())
148+
.openDate(new Date())
149+
.name("Savings").build();
150+
151+
Account account1 = Account.builder()
152+
.createdBy("Plural")
153+
.createdDate(new Date())
154+
.currentBalance(new BigDecimal("5.00"))
155+
.initialBalance(new BigDecimal("0.00"))
156+
.closeDate(new Date())
157+
.lastUpdatedBy("Sight")
158+
.lastUpdatedDate(new Date())
159+
.openDate(new Date())
160+
.name("FD").build();
161+
162+
account.getUsers().add(user1);
163+
account.getUsers().add(user);
164+
transaction.setAccount(account);
165+
166+
account1.getUsers().add(user1);
167+
account1.getUsers().add(user);
168+
169+
// user.getAccounts().add(account);
170+
// user.getAccounts().add(account1);
171+
172+
// user1.getAccounts().add(account);
173+
// user1.getAccounts().add(account1);
174+
// accountRepository.save(account1);
175+
// account.getTransactions().add(transaction);
176+
accountRepository.save(account);
177+
accountRepository.save(account1);
178+
179+
List<Account> accounts = accountRepository.findAll();
180+
accounts.forEach(x -> System.out.println(x));
181+
182+
// List<Transaction> transactions = transactionRepository.findAll();
183+
//
184+
// transactions.forEach(System.out::println);
185+
186+
Budget budget = Budget.builder()
187+
.goalAmount(new BigDecimal("10000.00"))
188+
.name("Emergency fund")
189+
.period("Yearly").build();
50190

51-
users.forEach(u -> System.out.println(u.toString()));
191+
budget.getTransactions().add(transaction);
192+
// budgetRepository.save(budget);
52193
}
53194

54195
private static Date getBirthday() {

0 commit comments

Comments
 (0)