Java tutorial
/* DomainEntity.java * * Copyright (C) 2014 Universidad de Sevilla * * The use of this project is hereby constrained to the conditions of the * TDG Licence, a copy of which you may download from * http://www.tdg-seville.info/License.html * */ package domain; import javax.persistence.Access; import javax.persistence.AccessType; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.Version; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonSubTypes.Type; import com.fasterxml.jackson.annotation.JsonTypeInfo; @Entity @Access(AccessType.PROPERTY) @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") @JsonSubTypes({ @Type(value = Survey.class, name = "survey"), @Type(value = Question.class, name = "question") }) public abstract class DomainEntity { // Constructors ----------------------------------------------------------- public DomainEntity() { super(); } // Identification --------------------------------------------------------- private int id; private int version; @Id @GeneratedValue(strategy = GenerationType.TABLE) public int getId() { return id; } public void setId(int id) { this.id = id; } @Version public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } // Equality --------------------------------------------------------------- @Override public int hashCode() { return this.getId(); } @Override public boolean equals(Object other) { boolean result; if (this == other) result = true; else if (other == null) result = false; else if (other instanceof Integer) result = (this.getId() == (Integer) other); else if (!this.getClass().isInstance(other)) result = false; else result = (this.getId() == ((DomainEntity) other).getId()); return result; } }