Hibernate: отображение проблем @OneToMany / @ManyToOne (без использования первичных ключей сущностей) - PullRequest
0 голосов
/ 12 сентября 2011

Я новичок в Hibernate / Spring, пытаюсь отобразить устаревшую базу данных и создать небольшую веб-утилиту, которая должна облегчить некоторую работу для коллег.Поскольку я нанёс на карту объекты и получил доступ к базовым данным, у меня возникли некоторые проблемы в будущем.Короче говоря, у меня есть два объекта: Клиент

@Entity
public class Customer implements Serializable{

    @Id
    @Column(name = "RecordID")
    private Integer id;

    @Column(name = "CUSTOMERNAME1")
    private String name;

    @OneToMany
    @JoinColumn(name="CUSTOMER1", referencedColumnName="CUSTOMERNAME1")
    private List<Contract> contracts;
}

и Контракт:

@Entity
public class Contract implements Serializable {

    @Id
    @Column(name = "RECORDID") //RecordID
    private Integer id;

    @Column(name = "CONTRACTID1") //ContractID1
    private String contractId;

    @Column(name = "CUSTOMER1") //Customer1
    private String customerName;

    //@ManyToOne
    //private Customer customer;  // how can I write the reverse mapping?
}

Отображение между Заказчиком и Контрактами работает (у одного клиента может быть много контрактов, я могуполучить их все, используя поле Список контрактов в клиенте, но у меня вопрос, как я могу добиться обратного - то есть получить клиента, которому сопоставлен контракт?

1 Ответ

2 голосов
/ 12 сентября 2011

Java API имеет несколько примеров того, как использовать аннотацию ManyToOne: http://java.sun.com/javaee/6/docs/api/javax/persistence/ManyToOne.html

примерно так:

Класс клиента:

@OneToMany(mappedBy="customer", cascade=CascadeType.ALL)
private List<Contract> contracts;

Контракткласс:

@ManyToOne
@JoinColumn(name="customer_id", nullable=false)
private Customer customer;  
...