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

GORM add foreign key value to already exist object

我使用 MySQL 数据库并使用 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
  }
}

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

我试过的方法之一

    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);

有谁知道如何设置与已保存在数据库中的对象的关系?

谢谢

我认为如果没有 joinTable 并且没有反向引用,您将无法拥有 hasMany

最简单的解决方案是稍微更改地址 class:

class Address {

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