Problem in JPA-Mapping

2019-06-04 06:09发布

问题:

I have a situation where my DB tables are like below, I am wondering how to have JPA mappings for this kind of tables , espacially for the auction_param_values which do not have primary key ID

Table Name : auction with primary key as auction_id

Table Name : *auction_param* with primary key as auction_param_id

Table AUCTIO_PARAM is used stores the details of parameters such as Start_Date,End_Date etc.

auction_param_id | auction_param_desc 

1                | start date
2                | end_date 

Table Name : auction_param_values

It stores the actual values of that parameters related to Auction.

Table looks like:-

auction_id | auction_param_id | auction_param value | 

   1       |      2           |      2011-01-15     | 

How will the entity class look for the auction_param_values ? is there any pointer on how we can design the schema to support JPA (we are using Eclipselink as a provider).

If require I can provide more details.

回答1:

dont know if I understood correctly but this might be what you need:

@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;

}