Search code examples
javahibernateinheritancemappingjoined-subclass

Hibernate subclass with foreign key relationships


I need some help defining the following object hierarchy/ database relationship in Hibernate

From the object sense – Agent is inherited from Person and Agency is inherited from Organization. they are inherited from Party which can have multiple Addresses associated with it

alt text

The database consists of

Agent
-ID
-Name
-PartyID (references Party.ID)
Agency
-ID
-Name
-PartyID (references Party.ID)
Address
-AddrID
-PartyID (references Party.ID)
-Street
Party.
-PartyID


Solution

  • Something like the following could be a start

    @Entity
    public class Party {
    
      @Id
      private BigInteger partyID;
    
      private String name;
    
      @OneToMany(mappedBy="party")
      private Set<Address> addresses;
    
    } 
    
    @Entity
    public class Organization extends Party {} 
    
    @Entity
    public class Person extends Party {} 
    
    @Entity
    public class Agency extends Organization {} 
    
    @Entity
    public class Agent extends Person {}
    
    @Entity
    public class Address{
    
      @Id
      private BigInteger addressID;
    
      @ManyToOne
      private Party party;
    
      private String street;
    }