package org.hibernate.test.annotations.generics; import java.util.HashSet; import java.util.Set; import javax.persistence.ElementCollection; import javax.persistence.Embeddable; import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.Table; public class Classes { @Embeddable @Table(name="Edition") public static class Edition<T> { T name; } @Entity @Table(name="Book") public static class Book { @Id @GeneratedValue(strategy=GenerationType.AUTO) Long id; @Embedded Edition<String> edition; } @Entity @Table(name="PopularBook") public static class PopularBook { @Id @GeneratedValue(strategy=GenerationType.AUTO) Long id; @ElementCollection @JoinTable(name="PopularBook_Editions",joinColumns={@JoinColumn(name="PopularBook_id")}) Set<Edition<String>> editions = new HashSet<Edition<String>>(); } }