While working with collection if you want the details to be stored in a seperate table using @ElementCollection solves the purpose
UserDetails.java
public class UserDetails { @ElementCollection private List<Address> arrList = new ArrayList<Address>(); }
Address.java
@Embeddable public class Address { private String DoorNo; private String Street; private String Location; private String Pincode; . . . }
createTables.java
public class CreateTables { public static void main(String[] args) { UserDetails objUserDetail1 = new UserDetails(); Address objAddr = new Address(); objAddr.setDoorNo("13"); objAddr.setStreetName("Poes Road"); objAddr.setLocation("Teynampet"); objAddr.setPincode("600018"); Address objAddr2 = new Address(); objAddr2.setDoorNo("256"); objAddr2.setStreetName("Sriman Srinivasan Road"); objAddr2.setLocation("Alwarpet"); objAddr2.setPincode("600018"); objUserDetail1.getArrList().add(objAddr); objUserDetail1.getArrList().add(objAddr2); } }
Giving Names to Joined Tables
- New Table will be created under USER_ADDRESS Name
- joinColumns decides which column should be used for joining two tables
Format for Join Table
@JoinTable(name="JOIN_TABLE_DESIRED_NAME", joinColumns= @JoinColumn(name="userId"))
@JoinTable(name="USER_ADDRESS", joinColumns= @JoinColumn(name="userId")) private Set<Address> addressSet = new HashSet(); . .