package org.hibernate.test.annotations.any; import java.util.HashMap; import java.util.Map; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.MapKeyColumn; import javax.persistence.Table; import org.hibernate.annotations.AnyMetaDef; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.ManyToAny; import org.hibernate.annotations.MetaValue; @Entity @Table( name = "property_map" ) public class PropertyMap { private Integer id; private String name; private Map<String, Property> properties = new HashMap<String, Property>(); public PropertyMap(String name) { this.name = name; } public PropertyMap() { super(); } @Id @GeneratedValue public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @ManyToAny( metaColumn = @Column( name = "property_type" ) ) @AnyMetaDef( idType = "integer", metaType = "string", metaValues = { @MetaValue( value = "S", targetEntity = StringProperty.class ), @MetaValue( value = "I", targetEntity = IntegerProperty.class ) } ) @Cascade( org.hibernate.annotations.CascadeType.ALL ) @JoinTable( name = "map_properties", joinColumns = @JoinColumn( name = "map_id" ), inverseJoinColumns = @JoinColumn( name = "property_id" ) ) @MapKeyColumn( name = "map_key", nullable = false ) //keep for legacy test public Map<String, Property> getProperties() { return properties; } public void setProperties(Map<String, Property> properties) { this.properties = properties; } }