/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.annotations.enumerated.mapkey;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.FetchType;
import javax.persistence.MapKeyColumn;
import javax.persistence.MapKeyEnumerated;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import java.util.EnumMap;
import java.util.Map;
/**
* @author Dmitry Spikhalskiy
* @author Steve Ebersole
*/
@Entity
@Table( name = "USER_TABLE" )
public class User {
@javax.persistence.Id
@javax.persistence.GeneratedValue(generator = "system-uuid")
@org.hibernate.annotations.GenericGenerator(name = "system-uuid", strategy = "uuid2")
@javax.persistence.Column(name = "id", unique = true)
private java.lang.String id;
@MapKeyEnumerated( EnumType.STRING )
@MapKeyColumn(name = "social_network")
@OneToMany(mappedBy = "user", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
private Map<SocialNetwork, SocialNetworkProfile> socialNetworkProfiles = new EnumMap<SocialNetwork, SocialNetworkProfile>(SocialNetwork.class);
protected User() {
}
public User(SocialNetwork sn, String socialNetworkId) {
SocialNetworkProfile profile = new SocialNetworkProfile(this, sn, socialNetworkId);
socialNetworkProfiles.put(sn, profile);
}
public SocialNetworkProfile getSocialNetworkProfile(SocialNetwork socialNetwork) {
return socialNetworkProfiles.get(socialNetwork);
}
public String getId() {
return id;
}
}