2011-01-14 4 views
1

ich eine Situation, wo meine DB-Tabellen wie unten sind, frage ich mich, wie für diese Art von Tabellen JPA Zuordnungen haben, von Nöten für die auction_param_values ​​dieProblem in JPA-Mapping

keine Primärschlüssel ID haben Tabellenname: Auktion mit Primärschlüssel als auction_id

Tabellenname: * auction_param * mit Primärschlüssel als auction_param_id

Tabelle AUCTIO_PARAM ist speichert die Details der verwendeten Parameter wie Start_Date, End_Date usw.

auction_param_id | auction_param_desc 

1    | start date 
2    | end_date 

Tabellenname: auction_param_values ​​

Es speichert die tatsächlichen Werte dieser Parameter in Bezug auf Auction .

Tabelle wie folgt aussieht: -

auction_id | auction_param_id | auction_param value | 

    1  |  2   |  2011-01-15  | 

Wie wird die Entity-Klasse Look für die auction_param_values? Gibt es einen Zeiger darauf, wie wir das Schema entwerfen können, um JPA zu unterstützen (wir verwenden Eclipselink als Provider).

Bei Bedarf kann ich weitere Details zur Verfügung stellen.

Antwort

2

weiß nicht, ob ich das richtig verstanden, aber das könnte das sein, was Sie brauchen:

@Entity 
public class Auction { 

    @Id 
    private Integer id; 

    @OneToMany(mappedBy="pk.auction") 
    @MapKey(name="pk.auctionParam") 
    private Map<AuctionParam, AuctionParamValue> values; 

} 

@Entity 
public class AuctionParam { 

    @Id 
    private Integer id; 

    private String description; 

} 

@Entity 
public class AuctionParamValue { 

    @EmbeddedId 
    private AuctionParamValuePK pk; 

    private String value; 

} 

@Embeddable 
public class AuctionParamValuePK { 

    @ManyToOne 
    @JoinColumn(name="auction_id") 
    private Auction auction; 

    @ManyToOne 
    @JoinColumn(name="auctionparam_id") 
    private AuctionParam auctionParam; 

} 
+0

Dank für Ihre reply.I implementiert, um die Art und Weise Sie jedoch vorgeschlagen haben, fand ich es ein error.And ich versuchte zeigt zu lösen es, aber ich bin nicht in der Lage, es herauszufinden.Error-Details: -Exception Beschreibung: Entity [Klasse com.eaportal.domain.AuctionParamValue] verwendet [Klasse com.eaportal.domain.AuctionParamValuePK] als eingebettete ID-Klasse, deren Access-Typ wurde bestimmt als [FIELD]. Aber [Klasse com.eaportal.domain.AuctionParamValuePK] definiert kein [FIELD]. Es ist wahrscheinlich, dass Sie in Ihrer ID-Klasse [class com.eaportal.domain.AuctionParamValuePK] nicht genügend Metadaten bereitgestellt haben. – tushar