2017-06-07 83 views
0

我使用YML映射學說。我有兩個實體。一個Group實體和一個User實體。學說 - 無法堅持實體與複合鍵

我試圖設置它,因此User s在組中具有唯一名稱。

我可以創建User,將它分配一個Group,並將其保存到數據庫。但是,當我嘗試創建User具有相同名稱和不同Group時,則出現錯誤,說明違反了name上的唯一約束。

爲什麼我不能堅持User

他們的映射是這樣的:

Entity\Group: 
    type: entity 
    table: groups 
    id: 
     id: 
      type: guid 
      nullable: false 
      id: true 
      generator: 
       strategy: AUTO 
    fields: 
     name: 
      type: text 
      nullable: true 

Entity\User: 
    type: entity 
    table: users 
    id: 
     group: 
      associationKey: true 
      nullable: false 
     name: 
      type: string 
    manyToOne: 
     Group: 
      targetEntity: Entity\Group 
      joinColumn: 
       name: group 
       referencedColumnName: id 

回答

0

我終於想通了這一點。我混淆了教義。

非標準的事情是,我使用大寫參數名稱來表示對象,並將其更改爲表格列的小寫字母。我在manyToOne:部分使用了name:

該文檔沒有真正做到這一點,所以我不知道我仍然需要引用id:部分中的大寫屬性名稱,並在那裏單獨定義列名稱。

於是,我改變了User映射到這一點:

Entity\User: 
    type: entity 
    table: users 
    id: 
     Group: 
      column: group 
      associationKey: true 
      nullable: false 
     name: 
      type: string 
    manyToOne: 
     Group: 
      targetEntity: Entity\Group 
      joinColumn: 
       name: group 
       referencedColumnName: id