Я думаю, что у вас есть некоторые заблуждения относительно реляционного отображения Hibernate.
Если на самом деле ваши заказы таблица имеют внешние ключи клиентов и сотрудников, то аннотации вы ищете @ManyToOne
@OneToMany аннотаций используются, когда объект имеет несколько записей, на которые ссылаются целевым объектом, в то время как @ManyToOne используется, когда ваш объект имеет только одну запись, ссылающуюся на целевую сущность.
Например:
Приказы лицо имеет одну ссылки от клиентов и одну ссылки от сотрудников организаций.
В этом случае Приказы лицо может быть нанесено на карту следующим образом:
@Entity
@Table(name = "Orders")
public class Order implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
private Client client;
@ManyToOne
private Employee employee;
//getters and setters
}
@Entity
@Table(name = "Clients")
public class Client implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String attribute1;
//getters and setters
}
@Entity
@Table(name = "Employees")
public class Employee implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String attribute1;
//getters and setters
}
В примере, приведенном выше, вы должны быть в состоянии сделать вашу схему отлично работает с Hibernate, но ради понимания, давайте представим сценарий, в котором вам нужно будет получить все Заказы от Клиента, конечно, вы могли бы сделать это с запросом, который выбирал бы только Заказы внутри таблицы Client, однако Hibernate предлагает аннотацию @OneToMany, которая даст вам возможность получить доступ все Заказы от Клиента без необходимости отдельного запроса, только путем сопоставления! Давайте посмотрим пример:
@Entity
@Table(name = "Orders")
public class Order implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
private Client client;
//getters and setters
}
@Entity
@Table(name = "Clients")
public class Client implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String attribute1;
@OneToMany(mappedBy = "client")
private List<Order> orders;
//getters and setters
}
В этом примере вы должны быть в состоянии получить все заказы от клиента только по телефону ГЭТ атрибута «заказов». Обратите внимание, что при сопоставлении @OneToMany мы указали атрибут «mappedBy» как «клиент», это было необходимо, потому что у нас есть двунаправленное сопоставление между клиентом и порядком, при простом использовании @OneToMany вам не понадобится это сопоставление.
Важно: При работе с отображением @OneToMany вы в конечном итоге столкнуться с некоторыми ленивыми Fetching проблемы, в этом случае я настоятельно рекомендую вам взглянуть на этот вопрос:
Solve “failed to lazily initialize a collection of role” exception
Кроме того, я думаю, вы должны начать читать больше о Hibernate, чтобы понять, о его основные понятия, пожалуйста, проверьте этот другой вопрос о @OneToMany и @ManyToOne аннотациями на Hibernate:
Hibernate/JPA ManyToOne vs OneToMany