//$Id$ package org.hibernate.test.annotations.onetomany; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.OneToMany; import org.hibernate.annotations.BatchSize; /** * @author Emmanuel Bernard */ @Entity public class Parent implements Serializable { @Id public ParentPk id; public int age; @OneToMany(cascade = CascadeType.ALL, mappedBy = "parent") @BatchSize(size = 5) @javax.persistence.OrderBy("favoriteSuperhero asc, favoriteSinger desc") public Set<Child> children; public int hashCode() { //a NPE can occurs, but I don't expect hashcode to be used before pk is set return id.hashCode(); } public boolean equals(Object obj) { //a NPE can occurs, but I don't expect equals to be used before pk is set if ( obj != null && obj instanceof Parent ) { return id.equals( ( (Parent) obj ).id ); } else { return false; } } public void addChild(Child child) { if ( children == null ) { children = new HashSet(); } child.parent = this; children.add( child ); } }