/** * Copyright 2009-2013 Oy Vaadin Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.vaadin.addon.jpacontainer.itest.lazyhibernate.domain; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; @Entity public class LazyPerson { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String firstName; private String lastName; @ManyToOne(fetch = FetchType.LAZY) private LazyPerson manager; @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) private Set<LazySkill> skills; @OneToMany(fetch = FetchType.LAZY, mappedBy = "manager") private Set<LazyPerson> employees; /** * @return the firstName */ public String getFirstName() { return firstName; } /** * @param firstName * the firstName to set */ public void setFirstName(String firstName) { this.firstName = firstName; } /** * @return the lastName */ public String getLastName() { return lastName; } /** * @param lastName * the lastName to set */ public void setLastName(String lastName) { this.lastName = lastName; } /** * @return the manager */ public LazyPerson getManager() { return manager; } /** * @param manager * the manager to set */ public void setManager(LazyPerson manager) { this.manager = manager; } /** * @return the skills */ public Set<LazySkill> getSkills() { return skills; } /** * @param skills * the skills to set */ public void setSkills(Set<LazySkill> skills) { this.skills = skills; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } // TODO: equals & hashcode @Override public boolean equals(Object obj) { if (obj instanceof LazyPerson) { LazyPerson other = (LazyPerson) obj; if (this == other) { return true; } if (id == null) { return false; } return id.equals(other.id); } return super.equals(obj); } @Override public int hashCode() { return id == null ? 0 : id.hashCode(); } @Override public String toString() { return getFirstName() + " " + getLastName(); } public Set<LazyPerson> getEmployees() { return employees; } public void setEmployees(Set<LazyPerson> employees) { this.employees = employees; } }