2016-09-25 47 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