package org.tests.inheritance.company.domain; import javax.persistence.DiscriminatorColumn; import javax.persistence.DiscriminatorType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.Version; /** * @author Per-Ingemar Andersson, It-huset i Norden AB */ @Entity @Table(name = "bar") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "bar_type", discriminatorType = DiscriminatorType.STRING) //@MappedSuperclass public abstract class AbstractBar { @Id @GeneratedValue private int barId; @ManyToOne(optional = false, fetch = FetchType.LAZY) @JoinColumn(name = "foo_id", nullable = false) private Foo foo; @Version private int version; public void setBarId(int barId) { this.barId = barId; } public int getBarId() { return barId; } public Foo getFoo() { return foo; } public void setFoo(Foo foo) { this.foo = foo; } public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } }