/* * Copyright 2012-2013 the original author or authors. * * 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 sample.data.jpa.domain; import java.io.Serializable; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.SequenceGenerator; import org.hibernate.annotations.NaturalId; @Entity public class Hotel implements Serializable { private static final long serialVersionUID = 1L; @Id @SequenceGenerator(name="hotel_generator", sequenceName="hotel_sequence", initialValue = 28) @GeneratedValue(generator = "hotel_generator") private Long id; @ManyToOne(optional = false) @NaturalId private City city; @Column(nullable = false) @NaturalId private String name; @Column(nullable = false) private String address; @Column(nullable = false) private String zip; @OneToMany(fetch = FetchType.LAZY, mappedBy = "hotel") private Set<Review> reviews; protected Hotel() { } public Hotel(City city, String name) { this.city = city; this.name = name; } public City getCity() { return this.city; } public String getName() { return this.name; } public String getAddress() { return this.address; } public String getZip() { return this.zip; } }