Модель постоянных классов - PullRequest
0 голосов
/ 29 января 2012

Я очень плохо знаком с hibernate и ORM, и у меня есть вопрос:

У меня есть три класса poco / pojo и сгенерированные таблицы из этих классов.

OrdersClass
{
 OrderNumber
 Date
 Sum
 *Products
 *Employee
}

ProductClass
{
 ProductName
 Price
}

EmployeeClass
{
 FirstName
 LastName
}

Я хочу отобразить смесь этих таблиц в сетке. Таким образом, столбцы сетки будут: OrdersClass.OrderNumber, Emplyee.FirstName.

Итак, мой вопрос:

Должен ли я создать новую сущность, которая будет моделировать вид сетки:

EntityForGrid
{
  OrderNumber
  FirstName
}

или я должен опираться на классы poco и загружать данные, т.е.

var orders = session.CreateQuery("from Orders WHERE something").List<Orders>();
var employee = session.CreateQuery("from Employee WHERE something").List<Employee>();

поэтому все данные отображаются как база данных.

Ответы [ 2 ]

0 голосов
/ 29 января 2012

Ваш класс заказа агрегирован. Таким образом, вы можете привязать ICollection к вашей сетке. Первый столбец будет привязан к Order.OrderNumber, второй к Order.Employee.FirstName. Работодатели вы можете получить в одном запросе с запросами заказов, или вы можете использовать ленивую загрузку коллекции работодателей. Это зависит от вашей стратегии получения.

0 голосов
/ 29 января 2012

Я не уверен, как вы сделали свои сопоставления, но если это сделано правильно, у вас должен быть получатель в вашем классе Orders с именем "getEmployee"

Так что вы можете запросить все заказы, которые соответствуют вашемуГДЕ и чем для каждой записи вызовите «getEmployee» для получения соответствующего сотрудника.Таким образом, вы получаете отношение ... что довольно сложно получить с двумя вашими выборами.

Или, если хотите, вы можете сделать что-то подобное (на Java)

final String query= "select o.num, e.first from Order o join o.employee where something";
List<Object[]> result= (List<Object[]>) sessionFactory.getCurrentSession().createQuery(query).list();

(Я полагаю, что вы на C # или что-то еще, поэтому вам нужно преобразовать его в это.)

Теперь у вас есть список Объектов, каждый из которых содержит два строковых значения, и они будут вашими результатами.

В основном, если вы используете ORM, как это, это похоже на прямое соединение с БД.Это сила приходит, когда ты можешь использовать мое первое предложение

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