Three tables are required. The two subclass tables have primary key associations to the superclass table so the relational model is actually a one-to-one association.
package com.candidjava.hibernate;
public class Book {
int id;
String title;
String author;
double cost;
public Book() {
}
public Book(String title, String author, double cost) {
this.title = title;
this.author = author;
this.cost = cost;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setTitle(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setAuthor(String author) {
this.author = author;
}
public String getAuthor() {
return author;
}
public void setCost(double cost) {
this.cost = cost;
}
public double getCost() {
return cost;
}
}
International Book
InternationalBook.java
package com.candidjava.hibernate;
public class InternationalBook extends Book {
private String languages;
private int region;
public InternationalBook() {
}
public InternationalBook(String title, String author, double cost,
String language, int region) {
super(title, author, cost);
languages = language;
this.region = region;
}
public void setLanguages(String s) {
languages = s;
}
public String getLanguages() {
return languages;
}
public void setRegion(int i) {
region = i;
}
public int getRegion() {
return region;
}
}
Special Edition Book
SpecialEditionBook.java
package com.candidjava.hibernate;
public class SpecialEditionBook extends Book {
private String newfeatures;
public SpecialEditionBook() {
}
public SpecialEditionBook(String title, String author, double cost,
String features) {
super(title, author, cost);
newfeatures = features;
}
public void setNewfeatures(String s) {
newfeatures = s;
}
public String getNewfeatures() {
return newfeatures;
}
}