Advanced JPA Mapping with Compound keys - OneToMany relationship

434 Views Asked by At

I am using JPA 1.0 and have following tables, namely, Type, Guide and Address (names simplified for clarity and highlighted in bold) It is a scenario, where in relationships between 3 tables is built on compound keys. Non key fields for every table are below the solid line.

Relationships

Type One --------> Many Guide
Guide Many <---------- One Address

Type

Code PK
Date1 PK


Name

Guide
Code FK
Date1 FK

Addr Identifier FK

Date2 FK


Value

Address

Addr Identifier PK

Date2 PK


Postal Code

(Pardon the formatting issue above) I would like to start with Type table and unsing the compound key Code and Date1, get multiple rows (as a list) from Guide table. Then using Addr Identifier and Date2 from the row I want to get a single row in Address table. Please note these are reference tables and the data does not change, so there are no deletes or updates on any of these tables

I have tried this simple set of annotations that are returning empty list. (code is implified for clarity)

1)

@Entity
@Table(name = "Type")
public Class Type
@OneToMany(mappedBy = "type", fetch = FetchType.EAGER)
private List<Guide> listGuide;

    getListGuide() {
        return listGuide;
    }

2)

@Entity
@Table(name = "Guide")
public Class Guide

@ManyToOne
@JoinColumns({@JoinColumn(name = "Code"),
         @JoinColumn(name = "Date1") })
private Type type;

When I use getListGuide() I am getting an empty list.

Can you please suggest a solution?

I also need a mapping solution between Guide and Address entities.

Regards,

0

There are 0 best solutions below