I am new to Hibernate. I have a OneToMany relationship with bidirectional mapping between Account and Transaction. I am not using @JoinColumn in either class and using @mappedBy in the non owning Account class. And everything is working fine. Using H2 in memory database, new join column is created in Transaction table. Then what is the use of @JoinColumn in OneToMany relationships-is it for unidirectional mapping only? Below is the code. I also read for reference What's the difference between @JoinColumn and mappedBy when using a JPA @OneToMany association
public class Account {
@OneToMany( mappedBy="account", cascade=CascadeType.ALL)
List<Transaction> list= new ArrayList<Transaction>();
}
public class Transaction {
@ManyToOne
Account account;
}
Application class :
Account a = new Account("savings");
Transaction t1 = new Transaction("shoe purchase", 45);
t1.setAccount(a);
a.getList().add(t1);
accountRepository.save(a);
output:
Transaction table has an entry with foreign key which is account number in that one row in Account table. ACCOUNT_ID column in created in Transaction table.
There are no extra tables created.