@Entity
@Table(name = "resource")
@Inheritance(strategy = InheritanceType.JOINED)
public class Resource {
@Id
private Long id = -1L;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
------
public abstract class InformationResource extends Resource {
@ManyToOne(optional = true, cascade = { CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE, CascadeType.DETACH })
private Institution publisher;
public Institution getPublisher() {
return publisher;
}
public void setPublisher(Institution publisher) {
this.publisher = publisher;
}
}
public class Institution {
@Id
private Long id = -1L;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
public class Document extends InformationResource {
...
}