Проблема в JPA-Mapping - PullRequest
       9

Проблема в JPA-Mapping

1 голос
/ 14 января 2011

У меня есть ситуация, когда мои таблицы БД, как показано ниже, мне интересно, как получить сопоставления JPA для такого рода таблицы, особенно для auction_param_values, которые не имеют идентификатора первичного ключа

Имя таблицы : аукцион с первичным ключом в качестве auction_id

Имя таблицы : * auction_param * с первичным ключом в качестве auction_param_id

Таблица AUCTIO_PARAM используется для хранения деталей таких параметров, как Start_Date, End_Date и т. Д.

auction_param_id | auction_param_desc 

1                | start date
2                | end_date 

Название таблицы : auction_param_values ​​

Хранит фактические значения этих параметров, связанных с Auction.

Таблица выглядит так: -

auction_id | auction_param_id | auction_param value | 

   1       |      2           |      2011-01-15     | 

Как будет выглядеть класс сущности для auction_param_values? есть ли указатель на то, как мы можем разработать схема для поддержки JPA (мы используем Eclipselink в качестве провайдера).

Если потребуется, могу предоставить более подробную информацию.

1 Ответ

2 голосов
/ 14 января 2011

Не знаю, правильно ли я понял, но это может быть то, что вам нужно:

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

}
...