GORM将外键值添加到已存在的对象中

时间:2016-03-29 13:34:54

标签: mysql grails gorm

我使用MySQL db并使用grails。我创建了2个表,我有一个列,表示表之间的外键(我使用hasMany)。 这就是我的一般情况:

class Address {

  static belongsTo = Person
  static mapping = {
    street defaultValue: "'s'"
    city defaultValue: "'c'"
 }
}

class Person {
  private String firstName
  private String lastName

  Set<Address> addresses;
  static hasMany = [addresses: Address]

  static mapping = {
    table 'people'
    firstName column: 'fn'
    addresses lazy: false
    addresses column:'Person_ID',joinTable: false
  }
}

我已经在db中创建了一些Address值,因此外键 Person_ID 为空。 现在我正在尝试更新它并将关系设置为Person但没有成功。 出于某种原因,一旦将对象保存在db中,我就无法更新关系。

我试过的方法之一

    Address a1 = new Address();
    a1.setCity("Tester1");
    a1.setStreet("Tester1");

    Person pdb = new Person(firstName: "SupermanB", lastName: "BatmanB");
    pdb.save(flush:true);

    pdb.addToAddresses(a1).save(flush:true);
    pdb.save(flush:true);

有没有人知道如何设置与已保存在db中的对象的关系?

由于

1 个答案:

答案 0 :(得分:0)

我认为没有hasMany并且没有后退参考我就不能joinTable

最简单的解决方案是稍微更改一下Address类:

class Address {

  static belongsTo = [ person:Person ]
  ...
}