After starting my new job I have been working alot with Java Annotations (EJB) so below is a quick reference of the 4 Common Data ones. This information has been taken partly from the Java Documentation and from my own Experience using both JPA and Hibernate. Each of the examples below deals with 2 Classes which we will call class_1 and class_2 affectionately.
@OneToMany -> @ManyToOne
A class_1 can have many class_2
@OneToMany(targetEntity=com.class_2.class, cascade=ALL, fetch=FetchType.EAGER)
@JoinColumn(name=”class_2_id”)
private Set<class_2> c2s = new HashSet();
<flip side>
@ManyToOne(targetEntity=com.class_1.class, cascade=ALL, fetch=FetchType.EAGER)
@JoinColumn(name=”class_2_id”, updatable=false, insertable=false)
private class_1 c1;
@OneToOne
A class_1 can have one class_2
private class_2 c2;
<flip side>
@OneToOne (targetEntity=struts.hibernate.model.class_1.class, fetch=FetchType.EAGER, mappedBy=”c2″)
private class_1 c1;
@ManyToMany
A class_1 can have many class_2 and a class_2 can have many class_1
*Note - This configuration uses a join table
@ManyToMany
@JoinTable(name=”class_1_to_class_2″
joinColumns=
@JoinColumn(name=”class_1_id”, referencedColumnName=”ID”),
inverseJoinColumns=
@JoinColumn(name=”class_2_id”, referencedColumnName=”ID”))
private Set<class_2> c2s = new HashSet();
<flip side>
@ManyToMany
@JoinTable(name=”class_1_to_class_2″
joinColumns=
@JoinColumn(name=”class_2_id”, referencedColumnName=”ID”),
inverseJoinColumns=
@JoinColumn(name=”class_1_id”, referencedColumnName=”ID”))
private Set<class_1> c1s = new HashSet();