Как сделать сущность @ManyToOne идентификатором класса в hibernate - PullRequest
2 голосов
/ 26 февраля 2012

У меня есть проблема, и я уже попробовал множество способов ее решения.

проблема довольно проста, как я могу использовать и идентификатор товара, и сумму в качестве первичного ключа?

Так как это сделает предмет крошечным шариком.И если я использую @MapsId, это дает точно такую ​​же вещь.

@Entity
public class C_Drop extends LightEntity implements Serializable {

    @Id
    @ManyToOne
    private C_Item item;
    @Id
    private double amount;
}

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class C_Drops extends LightEntity implements Serializable {

    @Id
    double id;

    @OneToMany
    private List<C_Drop> drops;
}

1 Ответ

1 голос
/ 26 февраля 2012

Я сам этого не делал, но вы, вероятно, могли бы использовать комбинацию Составной первичный ключ и двойное сопоставление столбца. e.g.:

@Entity
@IdClass(C_DropPK.class)
public class C_Drop extends LightEntity {
    @Id
    private double amount;

    @Id
    @Column(name = "ITEM_ID")
    private double itemId;

    @ManyToOne
    @JoinColumn(name="ITEM_ID")
    private C_Item item;
}

Тогда:

public class C_DropPK {
    private double itemId;

    private double amount;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...