package jpql.query; import java.util.Date; import java.util.Map; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity @NamedQueries ({ @NamedQuery(name="alias.param1", query="SELECT a.alias FROM Alias AS a WHERE (a.alias IS NULL AND :param1 IS NULL) OR a.alias = :param1"), @NamedQuery(name="alias.key1", query="SELECT KEY(k) FROM Alias a JOIN a.ids k"), @NamedQuery(name="alias.key2", query="SELECT KEY(e).firstName FROM Alias a JOIN a.addresses e"), @NamedQuery(name="alias.value1", query="SELECT VALUE(v) FROM Alias a JOIN a.ids v"), @NamedQuery(name="alias.value2", query="SELECT v FROM Alias a JOIN a.ids v"), @NamedQuery(name="alias.value3", query="SELECT VALUE(e).zip.code FROM Alias a JOIN a.addresses e"), @NamedQuery(name="alias.entry", query="SELECT ENTRY(e) FROM Alias a JOIN a.ids e") }) @SuppressWarnings("unused") public class Alias { @Id private int id; private String alias; @ElementCollection @Temporal(TemporalType.DATE) private Map<String, Date> ids; private Customer customer; @JoinColumn(name="ID", referencedColumnName="ALIAS.ALIAS") private Map<Customer, Address> addresses; }