2016-09-25 316 views
0

所以我有我的域名在下面。基本上我想要做的是获得给定WorkOrderSummary的所有需求数量。数据结构已存在于视图中,因此我只需要确定如何映射WorkOrder-to-demandNumbers(一对多)关系。所以一个lab_order_header_id可以包含许多demand_header_id。Gorm映射/一对多关系的自我引用

class WorkOrderSummary { 

    String workOrderNumber 
    Long demandNumbers 
    String demandTypeName 
    String statusName 
    Date needByDate 
    String customerName 
    Long facilityId 
    Long labDestinationId 
    Long assetTagQuantity 

    static hasMany = [demandNumbers: WorkOrderSummary] 


    static mapping = { 
     version false 
     table name: 'work_orders_v', schema: 'lab' 
     id column: 'lab_order_header_id' 
     demandNumbers column: 'demand_header_id' 
     demandTypeName column: 'demand_type' 
     statusName column: 'status' 
    } 
} 

现在,这只是让我在lab_order_header_id和demand_header_ids之间是一对一的关系。

有什么建议吗?

编辑 - 2016年9月26日

创造了demandNumbers另一个域类和谱写了属于关联:

class SalesOrderSummary { 

     String demandTypeName 

     static belongsTo = [workOrder: WorkOrderSummary] 

     static constraints = { 
     } 

     static mapping = { 
      version false 
      table name: 'work_orders_v', schema: 'lab' 
      id column: 'demand_header_id' 
      workOrder column: 'lab_order_header_id' 
      demandTypeName column: 'demand_type' 
     } 
    } 
+0

它看起来像'demandNumbers'既是'Long'类型又是'Set '类型(来自'hasMany')。 – tylerwal

+0

可以用'hasMany'和'belongsTo'的组合来实现这个功能,而不需要连接表/域的类,但我认为这可能是你最好的选择 - 我之前使用过这种方法(连接表)链接自引用对象。如果使用连接表,只要记住在WorkOrderSummary类中有'static mappedBy = [...]'。 – tylerwal

+0

@tylerwal请看我刚才的编辑。尽管它从相同的视图中进行选择,但我最终创建了第二个域类。所以它基本上只是加入自己吧? – Andrew

回答

1

如果你希望有很多DemandNumbers对于给定WorkOrderSummary 您应该更换以下行:

static hasMany = [demandNumbers: WorkOrderSummary] 

用以下行:

static hasMany = [demandNumbers: DemandNumbers] 

它应该使你想要得到的关系。

+0

但我没有一个名为DemandNumbers的单独域名类。这不是一个问题吗? – Andrew

+0

所以你应该创建一个,如果你想有这种行为。目前的映射是错误的。 – Rotem

+0

但我的DemandSummary域类看起来和我的SalesOrderSummary完全一样。 – Andrew