/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.test.join; import javax.persistence.Column; import javax.persistence.DiscriminatorColumn; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.PrimaryKeyJoinColumn; import javax.persistence.SecondaryTable; import javax.persistence.Transient; import org.hibernate.annotations.ColumnTransformer; import org.hibernate.annotations.Fetch; import org.hibernate.annotations.GenericGenerator; /** * @author Gavin King * @author Steve Ebersole */ @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn( name = "person_type" ) @DiscriminatorValue( value = "P" ) @SecondaryTable( name = "address", pkJoinColumns = @PrimaryKeyJoinColumn(name = "address_id") ) public class Person { private long id; private String name; private String address; private String zip; private String country; private double heightInches; private char sex; @Id @GeneratedValue( generator = "increment" ) @GenericGenerator( name = "increment", strategy = "increment" ) public long getId() { return id; } public void setId(long id) { this.id = id; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public String getName() { return name; } public void setName(String identity) { this.name = identity; } @Transient public String getSpecies() { return null; } @Column( name = "height_centimeters" ) @ColumnTransformer( read = "height_centimeters / 2.54E0", write = "? * 2.54E0" ) public double getHeightInches() { return heightInches; } public void setHeightInches(double heightInches) { this.heightInches = heightInches; } @Column(table = "address") public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Column(table = "address") public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Column(table = "address") public String getZip() { return zip; } public void setZip(String zip) { this.zip = zip; } }