@ElementCollection is new annotation introduced in JPA 2.0, This will help us get rid of One-Many and Many-One shitty syntax.
Example 1: Stores list of Strings in an Entity
@Entity
public class Users implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ElementCollection
private List<String> certifications = new ArrayList <String>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List <String> getCertifications() {
return certifications;
}
public void setCertifications(List <String> certifications) {
this.certifications = certifications;
}
..
}
Users u = new Users();
u.getCertifications().add("Sun Certified Java Programmer");
em.persist(u);
Generated Tables
Users
Column --> ID
Row 1
Users_CERTIFICATIONS
Column Users_ID CERTIFICATIONS
Row 1 Sun Certified Java Programmer
@ElementCollection rules
@Embeddable
public class Certification {
@Column(name = "name")
private String name;
@Temporal(TemporalType.DATE)
@Column(name = "issue_date")
private Date issueDate;
public Date getIssueDate() {
return issueDate;
}
public void setIssueDate(Date issueDate) {
this.issueDate = issueDate;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity
public class Users implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ElementCollection
@CollectionTable(name = "Certification", joinColumns = {@JoinColumn(name="user_id")})
private List<Certification> certifications = new ArrayList<Certification>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List <Certification> getCertifications() {
return certifications;
}
public void setCertifications(List <Certification> certifications) {
this.certifications = certifications;
}
..
}
Users u = new Users();
Certification c = new Certification();
c.setName("Sun Certified Java Programmer");
c.setIssueDate(new Date());
u.getCertifications().add(c);
em.persist(u);
Resulted Table structure
Table --> Users
Column --> ID
Row 1
Table --> Users_Certification
Column user_id name Issue_Date
Row 1 Sun Certified Java Programmer 2010-09-05
Map based Collection is a rich area it needs a seperate article to describe it some detail.
Example 1: Stores list of Strings in an Entity
@Entity
public class Users implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ElementCollection
private List<String>
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List
return certifications;
}
public void setCertifications(List
this.certifications = certifications;
}
..
}
Users u = new Users();
u.getCertifications().add("Sun Certified Java Programmer");
em.persist(u);
Generated Tables
Users
Column --> ID
Row 1
Users_CERTIFICATIONS
Column Users_ID CERTIFICATIONS
Row 1 Sun Certified Java Programmer
@ElementCollection rules
- This annotation was introduced to map basic and embedded type objects
- You can use any collection of type Collection, List, Set, Map
- Its easy to override default values for generated Tables and Columns
- JPA 1.0 only supported collection holding entity types using (@ManyToOne, @OneToMany) annotations
@Embeddable
public class Certification {
@Column(name = "name")
private String name;
@Temporal(TemporalType.DATE)
@Column(name = "issue_date")
private Date issueDate;
public Date getIssueDate() {
return issueDate;
}
public void setIssueDate(Date issueDate) {
this.issueDate = issueDate;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity
public class Users implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ElementCollection
@CollectionTable(name = "Certification", joinColumns = {@JoinColumn(name="user_id")})
private List<Certification> certifications = new ArrayList<Certification>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List
}
public void setCertifications(List
}
..
}
Users u = new Users();
Certification c = new Certification();
c.setName("Sun Certified Java Programmer");
c.setIssueDate(new Date());
u.getCertifications().add(c);
em.persist(u);
Resulted Table structure
Table --> Users
Column --> ID
Row 1
Table --> Users_Certification
Column user_id name Issue_Date
Row 1 Sun Certified Java Programmer 2010-09-05
Map based Collection is a rich area it needs a seperate article to describe it some detail.
Comments
Thanks from Mumbai
www.shikaku.ru
VPS and Web hosting
Spring Training in Chennai | Spring Course in Chennai | Spring Hibernate Training in Chennai
Embedded System training in Chennai | PLC Training institute in Chennai
python training in chennai
python course in chennai
python training in bangalore
python training in chennai
python course in chennai
python training in bangalore
motorola service center near me
motorola mobile service centre in chennai
moto g service center in chennai
angular 7 training in bangalore
sap s4 hana simple finance training in bangalore
javascript training in bangalore
sap hr training in bangalore
html training in bangalore
Java training in chennai | Java training in annanagar | Java training in omr | Java training in porur | Java training in tambaram | Java training in velachery
Sickrage
Louiz
Foundation
AWS training in Chennai
AWS Online Training in Chennai
AWS training in Bangalore
AWS training in Hyderabad
AWS training in Coimbatore
AWS training
Thank you much more for sharing with us...!
Reactjs Training in Chennai |
Best Reactjs Training Institute in Chennai |
Reactjs course in Chennai