Hibernate 持久类模型

Hibernate 持久类模型,hibernate,nhibernate,Hibernate,Nhibernate,我对hibernate和ORM非常陌生,我有个问题: 我有三个poco/pojo类,并从这些类生成表 OrdersClass { OrderNumber Date Sum *Products *Employee } ProductClass { ProductName Price } EmployeeClass { FirstName LastName } 我想在网格中显示这些表的混合。因此,网格列将是: OrdersClass.OrderNumber,employee.

我对hibernate和ORM非常陌生,我有个问题:

我有三个poco/pojo类,并从这些类生成表

OrdersClass
{
 OrderNumber
 Date
 Sum
 *Products
 *Employee
}

ProductClass
{
 ProductName
 Price
}

EmployeeClass
{
 FirstName
 LastName
}
我想在网格中显示这些表的混合。因此,网格列将是: OrdersClass.OrderNumber,employee.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>();

所以所有数据都像数据库一样映射。

我不确定您是如何进行映射的,但如果映射正确,您应该在Orders类中有一个名为getEmployee的getter

Sou您可以查询符合您的WHERE和than要求的所有订单,并为每个条目调用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,它类似于直接DB连接。当您能够使用我的第一个建议时,它的力量就来了。

您的订单类是聚合的。因此,可以将ICollection绑定到网格。第一列将绑定到Order.OrderNumber,第二列绑定到Order.Employee.FirstName。雇主你可以在一个查询中获取查询订单,或者你可以使用延迟加载雇主集合。这取决于您的获取策略。

我使用“代码优先”方法,因此我不知道是否应该让getter GetEmployee根据您的喜好调用它,但如果表之间存在关系,则应该以某种方式对其进行建模。例如,您的订单表将以某种形式与employee->遵循该关系,您将获得加入