package org.hibernate.test.annotations.genericsinheritance; import java.util.HashMap; import java.util.Map; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.MapKey; import javax.persistence.MappedSuperclass; import javax.persistence.OneToMany; @MappedSuperclass public abstract class Parent<C extends Child> { @Id @GeneratedValue Long id; @MapKey @OneToMany(mappedBy="parent") Map<Long,C> children = new HashMap<Long,C>(); public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Map<Long,C> getChildren() { return children; } public void setChildren(Map<Long,C> children) { this.children = children; } }