package uk.ac.cam.echo.server.models; import org.codehaus.jackson.annotate.JsonCreator; import org.codehaus.jackson.annotate.JsonIgnore; import org.codehaus.jackson.map.annotate.JsonSerialize; import uk.ac.cam.echo.data.Interest; import uk.ac.cam.echo.data.User; import uk.ac.cam.echo.server.HibernateUtil; import uk.ac.cam.echo.server.serializers.InterestSerializer; import javax.persistence.*; import java.util.Map; @JsonSerialize(using=InterestSerializer.class) @Entity @Table(name="Interests") public class InterestModel extends BaseModel implements Interest { public InterestModel() { } private static String[] allowed = {"name", "userId"}; @JsonCreator public InterestModel(Map<String, Object> props) { super(props, allowed); } @Id @GeneratedValue(strategy= GenerationType.SEQUENCE, generator="ConversationIdSeq") @SequenceGenerator(name="ConversationIdSeq", sequenceName="Conversation_SEQ", allocationSize=1) private long id; private String name; @ManyToOne(targetEntity = UserModel.class) private User user; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @JsonIgnore public User getUser() { return user; } public void setUser(User user) { this.user = user; } public Long getUserId() { if (this.getUser() != null) return this.getUser().getId(); return null; } public void setUserId(Long id) { if (id != null && id != 0) setUser((User) HibernateUtil.getSession().load(UserModel.class, id)); } }