/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.apache.ignite.examples.datagrid.hibernate; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; import org.hibernate.annotations.NaturalId; /** * A user entity class. Represents a user of some public service, * having a number of personal information fields as well as a * number of posts written. */ @Entity class User { /** ID. */ @Id @GeneratedValue(strategy=GenerationType.AUTO) private long id; /** Login. */ @NaturalId private String login; /** First name. */ private String firstName; /** Last name. */ private String lastName; /** Posts. */ @OneToMany(mappedBy = "author", cascade = CascadeType.ALL) private Set<Post> posts = new HashSet<>(); /** * Default constructor (required by Hibernate). */ User() { // No-op. } /** * Constructor. * * @param login Login. * @param firstName First name. * @param lastName Last name. */ User(String login, String firstName, String lastName) { this.login = login; this.firstName = firstName; this.lastName = lastName; } /** * @return ID. */ public long getId() { return id; } /** * @param id New ID. */ public void setId(long id) { this.id = id; } /** * @return Login. */ public String getLogin() { return login; } /** * @param login New login. */ public void setLogin(String login) { this.login = login; } /** * @return First name. */ public String getFirstName() { return firstName; } /** * @param firstName New first name. */ public void setFirstName(String firstName) { this.firstName = firstName; } /** * @return Last name. */ public String getLastName() { return lastName; } /** * @param lastName New last name. */ public void setLastName(String lastName) { this.lastName = lastName; } /** * @return Posts. */ public Set<Post> getPosts() { return posts; } /** * @param posts New posts. */ public void setPosts(Set<Post> posts) { this.posts = posts; } /** {@inheritDoc} */ @Override public String toString() { return "User [id=" + id + ", login=" + login + ", firstName=" + firstName + ", lastName=" + lastName + ']'; } }